SpringBoot盐与密码加密
在学习
SpringBoot的过程中,碰到了用户密码加密的问题,因为密码是不能以明文储存的,这是对用户负责
首先
我在百度和谷歌找了好多种解决方案,但是答案基本上千篇一律,都是一样的,而且只有部分才能解决问题,然后多亏LinCMS开源团队找到了我想要的解决方案,此前在查资料的过程中,找到的一种解决方案中,有一种可以解决,就是Spring security中的BCryptPasswordEncoder方法对密码进行加密,我测试了一下确实可以,而且和我预想中的一模一样,就是同一个密码在加密的时候每次得到的加密字符串都是不一样的,但是唯一一点让我很无奈的是,用Spring security会捆绑一系列的配置,况且我也没用到它,所以这个方案直接被我Pass掉了。
其次
我再说第二种解决方案,使用jhash、jotp
| 依赖 | Github地址 |
|---|---|
| jhash | https://github.com/amdelamar/jhash |
| jotp | https://github.com/amdelamar/jotp |
@Test
public void test() throws InvalidHashException {
char[] password = "Hello World!".toCharArray();
String hash = Hash.password(password).algorithm(Type.BCRYPT).create();
System.out.println(hash);
if(Hash.password(password).verify("bcrypt:13:60:16:n::$2a$13$aIPs6auOGff6bWWRNmfZleD1rzUQq2Owk8tSKeM9T8t2QqW7yTud.")) {
// Passwords match. Login successful!
System.out.println("success");
}
}
这是一小段测试代码,然后加密方式不止BCRYPT这种,也是就盐加密,我选的是这种,其实还有很多具体查看官方文档。