为了进行基准测试,我想让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/