java spring BCryptPasswordEncoder" SecureRandom random"构造函数参数

时间:2016-09-10 17:33:27

标签: java spring spring-security bcrypt

您能解释一下SecureRandom random课程中org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder参数的含义吗?

Javadoc在这里:javadoc

我问起这个构造函数:BCryptPasswordEncoder(int strength, SecureRandom random)。我无法理解参数SecureRandom random的含义。

我试图阅读弹簧文档或在谷歌中找到一些东西,但我仍然不了解它的目的。我知道bCrypt总是会在密码中添加一些随机盐,但正如我从BCrypt类的来源看到的那样,它是不一样的。

1 个答案:

答案 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);