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

10-11 06:48