Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该定期重新设定SecureRandom还是自动进行?_Java_Security_Random_Secure Random - Fatal编程技术网

Java 我应该定期重新设定SecureRandom还是自动进行?

Java 我应该定期重新设定SecureRandom还是自动进行?,java,security,random,secure-random,Java,Security,Random,Secure Random,我们使用的SecureRandom如下(使用Java8): 使用的算法是NativePRNG 我们应该定期播种吗 正如本文所述,NativePRNG不断地从操作系统接收熵(通过读取/dev/(u)random) 你怎么看?Java8文档说:SecureRandom必须生成非确定性输出。建议在生成“大量PRNG输出”时重新设置SecureRandom实例的种子。然而,它并没有具体说明什么是大额。这可能取决于使用的SecureRandom算法 Java文档没有声明将进行重新播种。如果特定的算法支持它

我们使用的
SecureRandom
如下(使用
Java8
):

使用的算法是
NativePRNG

我们应该定期播种吗

正如本文所述,NativePRNG不断地从操作系统接收熵(通过读取/dev/(u)random)


你怎么看?

Java8文档说:SecureRandom必须生成非确定性输出。

建议在生成“大量PRNG输出”时重新设置SecureRandom实例的种子。然而,它并没有具体说明什么是大额。这可能取决于使用的SecureRandom算法

Java文档没有声明将进行重新播种。如果特定的算法支持它,则在调用
SecureRandom.getInstance
时需要显式指定该算法

在Java 9中,添加了基于NIST.SP.800-90Ar1的DRBG实现()。这指定当种子寿命结束时,生成器应自行重新设定种子。您还可以看到,这是相应地实现的:(field
reseedCounter


但是,请记住,并不要求所有Java平台都需要支持DRBG(尽管很可能会)。因此,应适当处理无法使用的情况,或包括提供DRBG的安全提供商。

SecureRandom是否自行重新设定种子?你知道怎么做吗?同样的文档也说“许多SecureRandom实现是以伪随机数生成器(PRNG)的形式实现的,这意味着它们使用确定性算法从真正的随机种子生成伪随机序列。”这令人困惑。Java9将方法添加到SecureRandom。如果API不被认为是一个重要的特性,他们通常不会向API中添加一些内容。
import java.security.SecureRandom;
private SecureRandom random = new SecureRandom();