我已经看到在Spring中,我们可以通过BCryptPasswordEncoder构造函数参数(强度)来传递密码检查的轮数。有什么方法可以控制哈希生成中的回合数量吗?
我相信Spring Security的strength
的BCryptPasswordEncoder
参数确实控制了散列生成中的回合数:
BCryptPasswordEncoder
类的JavaDoc说:
使用BCrypt强哈希函数的PasswordEncoder的实现。客户可以选择提供一个“版本”($ 2a,$ 2b,$ 2y)和一个“强度”(BCrypt中的又名日志回合)和一个SecureRandom实例。强度参数越大,将需要更多的工作(以指数方式)来哈希密码。默认值为10。
[strength
参数作为BCrypt
参数传递到log_rounds
类(实际实现),JavaDoc对此进行了说明:
gensalt()方法采用一个可选参数(log_rounds),该参数确定哈希的计算复杂度:字符串strong_salt = BCrypt.gensalt(10)字符串strong_salt = BCrypt.gensalt(12)工作量成倍增加(2 ** log_rounds),因此每次增加量是工作量的两倍。默认log_rounds为10,有效范围为4到31。