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