当前位置:   article > 正文

【算法】bcrypt加密算法学习_mindrot bcrypt 用法

mindrot bcrypt 用法

应用场景

今天在看架构师的源码的时候发现了bcrypt这个加密算法,发现这个是放在权限包中,和用户的登录时密码的加密检查有关,所以查看了相关的资料了解一下这个算法。

以前自己写用户的登录时,密码的加密使用的是 salt+md5 的方式。salt是自己定制的一个规则针对不同的用户生成,如用户注册的当前时间加上指定的字符串然后进行hash生成。校验密码就是获取到用户的注册时间重新进行一边加密,检查两个加密后的字符串是否一致。

今天看资料的时候,说是 salt+md5 的方式安全级别也是不够的,通过scrypt可以增加破解难度。其实我觉得一般的场景 salt+md5 的方式也足够了。我其实是觉得这个加密包做的足够安全和傻瓜式,方便实用。

使用

  1. 导入jbcrypt包
<!-- https://mvnrepository.com/artifact/org.mindrot/jbcrypt -->
<dependency>
    <groupId>org.mindrot</groupId>
    <artifactId>jbcrypt</artifactId>
    <version>0.4</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  1. 使用主要的方法
import org.mindrot.jbcrypt.BCrypt;

public class BcryptTest {

    public static void main(String[] args) {
        //准备测试的密码
        String pwd = "test1";
        //获取salt,参数不能大于30
        String salt = BCrypt.gensalt(10);
        System.out.println("salt:" + salt);
        //经过加密后的字符串
        String hashed = BCrypt.hashpw(pwd, salt);
        System.out.println("hashed:" + hashed);
        //检查是否一致的
        System.out.println("is match:" + BCrypt.checkpw("test1", hashed));
    }

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

输出结果:

salt:$2a$10$203TpDwkZ8VzBlFYX3f0Ze
hashed:$2a$10$203TpDwkZ8VzBlFYX3f0ZeivU.eqR6AE5KcEGG2TQG.Cj30UmHGcC
is match:true
  • 1
  • 2
  • 3

TODO

后续有深入的思考再补充吧

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/687783
推荐阅读
相关标签
  

闽ICP备14008679号