zoukankan      html  css  js  c++  java
  • SCryptPasswordEncoder 单向加密 --- 心得

    1.前言

    * BCryptPasswordEncoder相关知识:
    * 用户表的密码通常使用MD5等不可逆算法加密后存储,为防止彩虹表破解更会先使用一个特定的字符串(如域名)加密,然后再使用一个随机的salt(盐值)加密。
    * 特定字符串是程序代码中固定的,salt是每个密码单独随机,一般给用户表加一个字段单独存储,比较麻烦。
    * BCrypt算法将salt随机并混入最终加密后的密码,验证时也无需单独提供之前的salt,从而无需单独处理salt问题。
    *
    与他类似的 加密方法还有 SCryptPasswordEncoder 等

    出现问题  :  报错  java.lang.NoClassDefFoundError: org/bouncycastle/crypto/generators/SCrypt

    2.解决

    需要导入依赖包即可

            <!-- SCryptPasswordEncoder 加密需要使用-->
            <dependency>
                <groupId>org.bouncycastle</groupId>
                <artifactId>bcprov-jdk15on</artifactId>
                <version>1.64</version>
            </dependency>

    3.加密测试【因为是单向加密,故无法解密,只能使用内置的方法比较】

    import org.junit.Test;
    
    import org.springframework.security.crypto.scrypt.SCryptPasswordEncoder;
    
    public class t {
        @Test
        public void t2(){
        //加密
        String s = (new SCryptPasswordEncoder()).encode("11");
        System.out.println(s);
        //字符长度
        System.out.println(s.length());
        //解密
        if ((new SCryptPasswordEncoder()).matches("11",s)){
         System.out.println("密码一样");
        }else {
         System.out.println("密码不一样");
        }
     } }

    运行结果 ,【 长度140】

    4.其他

    其他类似 SCryptPasswordEncoder 的加密方式还有 

    • BCryptPasswordEncoder【一样的用法 ,长度60,推荐使用】
    • Pbkdf2PasswordEncoder 【一样的用法 ,长度80】
    • StandardPasswordEncoder 【一样的用法 ,长度80,这个已被淘汰,但是还能用,不建议使用】

    分别需要的包

    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.security.crypto.password.Pbkdf2PasswordEncoder;
    import org.springframework.security.crypto.password.StandardPasswordEncoder;
  • 相关阅读:
    linux下的shell 快捷键
    Python3.x和Python2.x的区别
    [Python2.x] 利用commands模块执行Linux shell命令
    redis缓存策略
    高并发解决方案
    java8 lambda表达式应用
    java读写分离的实现
    数据库读写分离
    大数据量处理方案:分布式数据库
    google的CacheBuilder缓存
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13033193.html
Copyright © 2011-2022 走看看