出于基准测试目的,我想让 SecureRandom 产生确定性输出。这是否可以通过使用种子(或者可能是算法规范)来实现?
import java.security.SecureRandom;
class TestSecureRandom {
public static void main(String [] args) {
SecureRandom rnd = new SecureRandom();
rnd.setSeed(1);
System.out.println(rnd.nextInt());
}
}
对我来说,即使指定了种子,上述程序也会产生不同的值。
最佳答案
执行此操作的最简单方法可能是使大部分代码仅依赖于 Random
,并注入(inject)一个实例(例如,将其传递给构造函数)。这样,出于测试目的,您可以传入一个带有固定种子的简单Random
- 但对于需要安全性的真实运行,您可以传入一个实例>SecureRandom
.
关于java - 从 SecureRandom 获取确定性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27341294/