spring security 預設使用BCrypt , 但是舊的系統使用md5 hash,
@Bean
PasswordEncoder passwordEncoder() {
PasswordEncoder defaults = PasswordEncoderFactories.createDelegatingPasswordEncoder();
Map<String, PasswordEncoder> encoderMap = new HashMap<>();
encoderMap.put("MD5", new MessageDigestPasswordEncoder("MD5"));
DelegatingPasswordEncoder delegatingPasswordEncoder = new DelegatingPasswordEncoder("MD5", encoderMap);
delegatingPasswordEncoder.setDefaultPasswordEncoderForMatches(defaults);
return delegatingPasswordEncoder;
}
String rawPassword = "123456";
String oldMd5Passwd = String.format("{MD5}%s","e10adc3949ba59abbe56e057f20f883e");
String newMd5Passwd = passwordEncoder.encode(rawPassword);
logger.info(String.valueOf(passwordEncoder.matches(rawPassword,oldMd5Passwd)));
原資料庫裡經md5的密碼欄位要加上{MD5}
以密碼123456為例, 要存成 "{MD5}e10adc3949ba59abbe56e057f20f883e"
記得要存成小寫, 這裡卡關很久
https://emn178.github.io/online-tools/md5.html
https://www.cnblogs.com/cycheng/p/13984640.html
