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;
  • 相关阅读:
    《礼物》
    第三讲.线性表(读书笔记)
    UI第十四讲(上) UI高级可视化设计 (XIB, Storyboard, AutoLayout, SIzeClass )
    UI第十三讲 UITabBarController(标签视图控制器) Block块传值
    UI第十二讲 通讯录实战
    deepin中Tomcat添加执行权限
    deepin修改javahome不生效,一直显示openjdk解决
    deepin中idea中文乱码解决
    maven添加settings.xml使用阿里云仓库
    debian配置java环境变量
  • 原文地址:https://www.cnblogs.com/c2g5201314/p/13033193.html
Copyright © 2011-2022 走看看