介绍

JBCrypt对管理密码非常方便,采用hash+salt的方式,使用密码生成salt和hash,并将salt加入到hash里面去,从而使得salt不需要单独保存,同时嫌“MD5”计算速度“太快”,从而加入了反复执行的功能,降低暴力破解的风险。

详细介绍

项目git地址:https://github.com/jeremyh/jB...
项目maven:

<!-- https://mvnrepository.com/artifact/org.mindrot/jbcrypt -->
<dependency>
    <groupId>org.mindrot</groupId>
    <artifactId>jbcrypt</artifactId>
    <version>0.4</version>
</dependency>

重要方法

BCrypt.gensalt() : 生成salt的方法,一般不需要单独调用,和下面的方法一起使用。

BCrypt.hashpw(password, BCrypt.gensalt(4)):生成hash密码,传入用户密码和salt。虽然是在生成salt的时候传入了一个整数,单该数字只是加在了盐的前缀上,用于在计算hash的时候使用。

BCrypt.checkpw(candidate, hashed):密码验证,传入密码候选值和hash密码,返回布尔值。

应用

在之前的一些web系统中,会使用MD5+SALT的方法,每个用户的salt不同,还要单独保存。使用JBCrypt的话,salt就可以隐藏起来了,系统不需要保存salt,因为salt就保存在hash密码中了。又一个开箱即用的好工具。

其他

在JBCrypt中,使用了JDK8的SecureRandom类,关于随机数,请参考 Java中生成随机数Random、ThreadLocalRandom、SecureRandomRandom函数的安全性问题与SecureRandom


沈子平
183 声望17 粉丝

慢慢积累,一切都不会太晚.