Java 是否SecureRandom.nextLong()
返回所有可能的值,因为它继承自Random
仅使用 48 位?如果没有,我是否仍然可以在 Java 中通过修改 Random 类来做到这一点以及如何做到这一点?我只想使用一个全随机长数生成器,如果可能的话,可以返回所有可能的长值。
问问题
941 次
1 回答
7
虽然 SecureRandom 继承自 Random,但它不使用相同的数学运算或具有相同的限制。它最终会产生所有可能的 64 位值。
此类提供了一个加密的强随机数生成器 (RNG)。
此类委托给许多可能的实现之一。您可以通过调用选择一个SecureRandom.getInstance(algorithm)
注意:某些实现在您的计算机中使用熵来使结果随机,而不是纯粹的伪随机。
这使用 s 48 位算法
SecureRandom 不使用其父级的任何方法,例如
/**
* The provider implementation.
*/
private SecureRandomSpi secureRandomSpi = null;
public void nextBytes(byte[] bytes) {
secureRandomSpi.engineNextBytes(bytes);
}
此方法委托给完全不同的实现。
相关链接如何解决缓慢的 Java `SecureRandom`?由于使用 /dev/random
于 2018-08-05T17:41:02.317 回答