如果Java SecureRandom.nextLong()
继承自Random
(仅使用48位),是否返回所有可能的值?如果没有,我是否仍可以通过修改Random类以及如何做到这一点在Java中完成呢?我只想使用一个全随机的长数生成器,如果可能的话,可以返回所有可能的长值。
答案 0 :(得分:7)
虽然SecureRandom继承自Random,但它使用的数学方式不同或具有相同的限制。最终将产生所有可能的64位值。
此类提供了加密强度高的随机数生成器(RNG)。
该类委托许多可能的实现之一。您可以通过致电SecureRandom.getInstance(algorithm)
注意:某些实现使用计算机中的熵使结果随机,而不是纯伪随机。
这使用了48位算法
SecureRandom不使用其父级的任何方法,例如
/**
* The provider implementation.
*/
private SecureRandomSpi secureRandomSpi = null;
public void nextBytes(byte[] bytes) {
secureRandomSpi.engineNextBytes(bytes);
}
此方法委托一个完全不同的实现。
相关链接How to solve slow Java `SecureRandom`?由于使用/ dev / random