java spring BCryptPasswordEncoder "SecureRandom random" 构造函数参数
java spring BCryptPasswordEncoder "SecureRandom random" constructor parameter
能否请您解释一下 class org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
中的 SecureRandom random
参数的含义?
Javadoc 在这里:javadoc
我问这个构造函数:BCryptPasswordEncoder(int strength, SecureRandom random)
。我不明白参数SecureRandom random
是什么意思。
我已经尝试阅读 spring 文档或在 google 中找到一些内容,但我仍然不明白它的用途。我知道 bCrypt 总是在密码中添加一些随机盐,但正如我从 BCrypt
class 的来源中看到的那样,它是不一样的。
正如它在 SecureRandom
的 javadoc 中所说,它是一个包含随机数的对象,您可以使用该随机数来随机化 BCryptPasswordEncoder
生成的哈希值。
以下是 class 的 javadoc 中的内容:
A cryptographically strong random number minimally complies with the statistical random number generator tests specified in FIPS 140-2, Security Requirements for Cryptographic Modules, section 4.9.1.
有关如何创建 SecureRandom 的示例,请参阅文档中的另一句话:
Typical callers of SecureRandom invoke the following methods to retrieve random bytes:
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
Callers may also invoke the generateSeed method to generate a given number of seed bytes (to seed other random number generators, for example):
byte seed[] = random.generateSeed(20);
按如下方式定义 bean(强度为 11,SecureRandom 作为盐)
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder(11, new SecureRandom());
}
能否请您解释一下 class org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
中的 SecureRandom random
参数的含义?
Javadoc 在这里:javadoc
我问这个构造函数:BCryptPasswordEncoder(int strength, SecureRandom random)
。我不明白参数SecureRandom random
是什么意思。
我已经尝试阅读 spring 文档或在 google 中找到一些内容,但我仍然不明白它的用途。我知道 bCrypt 总是在密码中添加一些随机盐,但正如我从 BCrypt
class 的来源中看到的那样,它是不一样的。
正如它在 SecureRandom
的 javadoc 中所说,它是一个包含随机数的对象,您可以使用该随机数来随机化 BCryptPasswordEncoder
生成的哈希值。
以下是 class 的 javadoc 中的内容:
A cryptographically strong random number minimally complies with the statistical random number generator tests specified in FIPS 140-2, Security Requirements for Cryptographic Modules, section 4.9.1.
有关如何创建 SecureRandom 的示例,请参阅文档中的另一句话:
Typical callers of SecureRandom invoke the following methods to retrieve random bytes:
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
Callers may also invoke the generateSeed method to generate a given number of seed bytes (to seed other random number generators, for example):
byte seed[] = random.generateSeed(20);
按如下方式定义 bean(强度为 11,SecureRandom 作为盐)
@Bean
public PasswordEncoder encoder() {
return new BCryptPasswordEncoder(11, new SecureRandom());
}