java - 从 SecureRandom 获取确定性值?

标签 java random

出于基准测试目的,我想让 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/

相关文章:

java - 具有多个订阅者和事件的 RxJava 并发

java - 如何在 drools 6.3.0 中从文件系统加载 drl 文件

javascript - 错误无法读取未定义的属性 'add'

c++ - 在类中使用 std::chrono::high_resolution_clock 播种 std::mt19937 的正确方法是什么?

Java 将字节转换为字符 - 转换问题

java - 按字母顺序对 Enum.values() 进行排序,并将它们添加到 Spinner ArrayAdapter

random - 如何让这组圆出现在平行四边形的边界内?

c - 如何修复错误: incompatible types when returning type 'struct {aka struct <anonymous>}

javascript - 在Wordpress网站上点击图片播放随机声音?

java - 使用 Java Regex,如何检查字符串是否包含集合中的任何单词?