来自这里的 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/