Исходя из мира C ++ здесь, таким образом, природа вопроса ...
Я хочу использовать один генератор SecureRandom в приложении Java, но мне нужно несколько экземпляров класса для хранения ссылки на него в конструкторе, а не в копиях.
Итак,
public class MyClass {
private SecureRandom random;
public MyClass(SecureRandom _random) { random = _random };
... }
Приводит ли это к ссылке на тот же генератор или к его копии? Проблема с копией состоит в том, что создание нескольких объектов MyClass один за другим приведет к одинаковым последовательностям, если SecureRandom является псевдослучайным, например, SHA1PRNG. Мне нужно, чтобы они разделяли один, чтобы последовательности вызовов random.nextBytes (...) давали разные результаты в каждом экземпляре MyClass.
(Кстати, гарантированно, что SHA1PRNG будет заполняться по-разному каждый раз, когда в главном приложении создается новый экземпляр SecureRandom, и, надеюсь, более безопасным способом, чем время?)