您能解释一下SecureRandom random
课程中org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
参数的含义吗?
Javadoc在这里:javadoc
我问起这个构造函数:BCryptPasswordEncoder(int strength, SecureRandom random)
。我无法理解参数SecureRandom random
的含义。
我试图阅读弹簧文档或在谷歌中找到一些东西,但我仍然不了解它的目的。我知道bCrypt总是会在密码中添加一些随机盐,但正如我从BCrypt
类的来源看到的那样,它是不一样的。
答案 0 :(得分:1)
正如它从SecureRandom
的javadoc所说的那样,它是一个包含随机数的对象,您可以使用该对象随机化BCryptPasswordEncoder
生成的哈希值。
以下是该类的javadoc:
加密强随机数最低限度符合FIPS 140-2“加密模块的安全要求”第4.9.1节中规定的统计随机数生成器测试。
有关如何创建SecureRandom的示例,请参阅文档中的另一个引用:
SecureRandom的典型调用者调用以下方法来检索随机字节:
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
调用者也可以调用generateSeed方法来生成给定数量的种子字节(例如,为其他随机数生成器播种):
byte seed[] = random.generateSeed(20);