gpt4 book ai didi

java - 不需要播种 java.security.SecureRandom 吗?

转载 作者:行者123 更新时间:2023-11-30 07:20:25 25 4
gpt4 key购买 nike

我正在使用 Java 1.7,如下面的代码所示(在 Ubuntu 中使用 Oracle 的 Java 7 编译器编译)播种 java.security.SecureRandom 似乎是不必要的,因为代码为两个伪随机序列的起始值:

import java.security.SecureRandom;
import java.math.BigInteger;

public class SessionIdTest {

public static void main (String args[]) {
long seed = System.currentTimeMillis();
{
SecureRandom random = new SecureRandom();
random.setSeed(seed);
BigInteger a = new BigInteger(130, random);
System.out.println(a);
}
{
SecureRandom random = new SecureRandom();
random.setSeed(seed);
BigInteger a = new BigInteger(130, random);
System.out.println(a);
}
}
}

那么setSeed的目的是什么?还是 SecureRandom 除了种子之外,还使用其他一些随机源?

最佳答案

javadoc 说:

Many SecureRandom implementations are in the form of a pseudo-random number generator (PRNG), which means they use a deterministic algorithm to produce a pseudo-random sequence from a true random seed. Other implementations may produce true random numbers, and yet others may use a combination of both techniques.

因此,如文档所述,依靠安全随机数通过播种来生成确定性的值序列不一定有效。

关于java - 不需要播种 java.security.SecureRandom 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14020158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com