Spring BCryptPasswordEncoder-有什么方法可以配置散列生成的轮数?

时间:2020-04-13 09:04:01

标签: spring spring-boot spring-security bcrypt spring-oauth2

我已经看到在Spring中,我们可以通过BCryptPasswordEncoder构造函数参数(强度)来传递密码检查的轮数。有什么方法可以控制哈希生成中的回合数量?

1 个答案:

答案 0 :(得分:1)

我相信Spring Security的strength的{​​{1}}参数可以控制散列生成的回合数:

BCryptPasswordEncoder类的JavaDoc说:

使用BCrypt强哈希函数的PasswordEncoder的实现。客户可以选择提供一个“版本”($ 2a,$ 2b,$ 2y)和一个“强度”(BCrypt中的又名日志回合)和一个SecureRandom实例。强度参数越大,将需要更多的工作(以指数方式)以哈希密码。默认值为10。

BCryptPasswordEncoder参数作为strength参数传递给BCrypt类(实际实现),JavaDoc对此表示如下:

gensalt()方法采用一个可选参数(log_rounds),该参数确定哈希的计算复杂度: 字符串strong_salt = BCrypt.gensalt(10)字符串strong_salt = BCrypt.gensalt(12) 工作量成倍增加(2 ** log_rounds),因此每个增量是工作量的两倍。默认log_rounds为10,有效范围为4到31。