根据docs:
使用BCrypt强哈希函数的PasswordEncoder的实现。客户端可以选择提供“强度”(在BCrypt中的日志轮次)和SecureRandom实例。强度参数越大,散列密码的工作量(指数式)就越多。默认值为10.
答案 0 :(得分:11)
强度被转换为迭代。对于强度x,将有 2 x 迭代。假设实现使用无符号32位整数,其中最大值为4294967295.如果x大于31,2 x 大于此最大值,则会发生溢出。
实际上,Spring Security中的Java实现实际上使用的是64位long
,因为整数在Java中是签名的(最多int
是2 31 -1)。
强度为31或接近非常慢,无论如何都无法使用。