SecureRandom.ints () является безопасным?

Каждый узел должен содержать целый файл. В этом случае локальная файловая система будет логически неотличима от HDFS в отношении этого файла.

53
задан Lutz Horn 30 July 2019 в 08:02
поделиться

3 ответа

Да это безопасно.

исследование Кода java.util.Random шоу, который ints() создает spliterator, который использует internalNextInt(...) для генерации случайных целых чисел. Это в свою очередь звонит nextInt() на this. В случае java.security.SecureRandom, nextInt() переопределяется для генерации "безопасного" случайного числа <глоток> 1 .

можно подтвердить это для себя путем рассмотрения исходного кода.

<час>

<глоток> 1 - Конечно, на самом деле не имеет смысла называть целое число или последовательность целых чисел "безопасными". И существуют ситуации, где SecureRandom не может иметь свойств, которых Вы требуете. (Это зависит от фактического RNG или реализации PRNG, используемой классом, качеством предоставленного семени или системы, обеспеченной энтропийный источник, и так далее.), Но SecureRandom:: ints () генерирует последовательность целых чисел, которая имеет те же свойства, как будто Вы сделали последовательность SecureRandom:: nextInt () обращается к тому же объекту. Если последняя последовательность подходит в Ваших целях (независимо от того, что они), затем так первый.

33
ответ дан 7 November 2019 в 08:08
поделиться

Да, SecureRandom

обеспечивает криптографически сильный генератор случайных чисел (RNG).

Одним важным фактором для безопасного RNG является семя.

Поэтому любой материал семени, переданный объекту SecureRandom, должен быть непредсказуемым, и все выходные последовательности SecureRandom должны быть криптографически сильными, как описано в RFC 4086: Требования Случайности для безопасности.

Разрешение и использование это. Если Вы интересуетесь деталями, считайте JavaDoc, который описывает различные подходы, используемые реализациями.

10
ответ дан 7 November 2019 в 08:08
поделиться

Random.ints() метод, который возвращается IntStream. IntStream не безопасно и не небезопасен: это - поток чисел.

"безопасность" последовательности ints, возвращенного методом, зависит от реализации метода. SecureRandom генерирует его "случайные" значения более надежно, чем Random. Они совместно используют тот же API, и таким образом можно использовать любого в данном контексте в зависимости от требований.

Так, факт, который это наследовало от небезопасного класса, не важен безопасности: Вы можете довольно доверительный, что SecureRandom класс так безопасен, как в документации говорится, что это.

<час>

Рассматривают аналогию с HashSet: это не делает гарантий итератора, заказывая ; однако, LinkedHashSet , подкласс HashSet делает упорядочивание итератора гарантии. Гарантия LinkedHashSet согласовывается с гарантией [1 110], потому что определенное упорядочивание является одним из возможных упорядочиваний, которые не могли наблюдаться с "никаким гарантируемым упорядочиванием" (в конце концов, необходимо возвратить элементы в [1 119] приблизительно [1 119] порядок).

Точно так же Random не делает гарантии о безопасности последовательности ints возвращенными; SecureRandom делает более сильные гарантии. Но нет никакой причины, почему последовательность ints от SecureRandom не могла также быть возвращена Random по совпадению.

14
ответ дан 7 November 2019 в 08:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: