java - 在 Java 中存储对单个 SecureRandom 的引用?

标签 java reference random

来自这里的 C++ 世界,因此问题的本质......

我想在 Java 应用程序中使用单个 SecureRandom 生成器,但我需要类的多个实例来在构造函数中存储对该类的引用,而不是副本。

所以,

public class MyClass {
    private SecureRandom random;
    public MyClass(SecureRandom _random) { random = _random };
... }

这是否会导致对同一生成器或其副本的引用?副本的问题在于,如果 SecureRandom 是伪随机对象(例如 SHA1PRNG),则依次构建多个 MyClass 对象将导致相同的序列。我需要的是它们共享一个,以便对 random.nextBytes(...) 的调用序列将在每个 MyClass 实例中给出不同的结果。

(顺便问一下,每次在主应用程序中创建 SecureRandom 的新实例时,SHA1PRNG 是否保证以不同的方式播种,并且希望以比这次更安全的方式?)

最佳答案

在 Java 中,任何非基本类型(boolean、char、byte、short、int、long、float、double)的都是引用类型。复制引用类型的唯一方法是通过克隆、序列化、复制构造等显式执行此操作。您没有使用 Clone() 或其同类,也没有使用构造函数。你只是在做作业。这意味着您正在复制引用。

关于java - 在 Java 中存储对单个 SecureRandom 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2376603/

相关文章:

c# - 在局部 View mvc 中显示三篇随机文章

java - OpenGL 纹理删除时出错

c++ - 类型 ** 的包装器的数组订阅运算符的返回类型是 *&?

c++ - 持有对多重嵌套 std::vector 的引用的正确内容是什么?

java - 显示随机图像

Objective-C:模偏差

java - scala - 获取类/源文件名和符号位置

java - 从代码中解析 OSGi 包

java - 使用 Javascript 将 doc/docx 批量转换为 pdf

PHP 通过引用传递数组