如何在Java中生成所有可能的64位随机值?

时间:2018-08-05 17:09:43

标签: java random generator long-integer secure-random

如果Java SecureRandom.nextLong()继承自Random(仅使用48位),是否返回所有可能的值?如果没有,我是否仍可以通过修改Random类以及如何做到这一点在Java中完成呢?我只想使用一个全随机的长数生成器,如果可能的话,可以返回所有可能的长值。

1 个答案:

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