今天好奇把spring boot升到2.0.3.RELEASE版本,发现spring security也发布5以上版本,把所有包都升级后发现spring security下的Md5PasswordEncoder不可用了。后来发现不单是Md5PasswordEncoder不可用的问题,是org.springframework.security.authentication.encoding这个包已经被全干掉了。Md5就这么被时代慢慢抛弃了。
可是我的程序怎么办?原来的Md5代码怎么处理呢,原来spring security5把密码解码器放到org.springframework.security.crypto.password包下了。如果还要使用Md5加密,你只能采用以下方式
引入org.springframework.security.crypto.password包中的PasswordEncoder和MessageDigestPasswordEncoder。
import org.springframework.security.crypto.password.*;
PasswordEncoder passwordEncoder =new MessageDigestPasswordEncoder("MD5");
//加密
passwordEncoder.encode("123456");
当然现在Md5已经被归入放弃的行列,当然被放弃的不但只是Md5,像ldap、MD4、SHA-1、SHA-256等都属于不建议使用的行列,现在已经是pbkdf2、bcrypt、scrypt的天下了。
![](https://img.haomeiwen.com/i6120219/7d5c9554d54b04e3.png)
当你在使用
PasswordEncoder passwordEncoder =new SCryptPasswordEncoder();
千万别忘了加载bcprov-jdk15on这个包,当前最新版本是1.6。
如果是使用gradle,请引入
compilegroup:'org.bouncycastle',name:'bcprov-jdk15on',version:'1.60'
参考文档
https://info.michael-simons.eu/2018/01/13/spring-security-5-new-password-storage-format/
https://docs.spring.io/spring-security/site/docs/5.0.7.RELEASE/reference/htmlsingle/
网友评论