SpringBoot盐与密码加密

在学习SpringBoot的过程中,碰到了用户密码加密的问题,因为密码是不能以明文储存的,这是对用户负责

首先

​ 我在百度和谷歌找了好多种解决方案,但是答案基本上千篇一律,都是一样的,而且只有部分才能解决问题,然后多亏LinCMS开源团队找到了我想要的解决方案,此前在查资料的过程中,找到的一种解决方案中,有一种可以解决,就是Spring security中的BCryptPasswordEncoder方法对密码进行加密,我测试了一下确实可以,而且和我预想中的一模一样,就是同一个密码在加密的时候每次得到的加密字符串都是不一样的,但是唯一一点让我很无奈的是,用Spring security会捆绑一系列的配置,况且我也没用到它,所以这个方案直接被我Pass掉了。

其次

​ 我再说第二种解决方案,使用jhashjotp

依赖 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这种,也是就盐加密,我选的是这种,其实还有很多具体查看官方文档。