Генерация надёжных случайных чисел
Получение наиболее надёжной реализации SecureRandom на платформе.
Сравнение кода
✕ Java 8
// Default algorithm — may not be
// the strongest available
SecureRandom random =
new SecureRandom();
byte[] bytes = new byte[32];
random.nextBytes(bytes);
✓ Java 9+
// Platform's strongest algorithm
SecureRandom random =
SecureRandom.getInstanceStrong();
byte[] bytes = new byte[32];
random.nextBytes(bytes);
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Наиболее надёжный
Автоматически выбирает лучший алгоритм для платформы.
Явное намерение
Явно указывает, что требуется высокая степень случайности.
Настраиваемый
Администраторы могут изменить надёжный алгоритм через свойства безопасности.
Старый подход
new SecureRandom()
Современный подход
getInstanceStrong()
Начиная с JDK
9
Сложность
Начинающий
Поддержка JDK
Генерация надёжных случайных чисел
Доступно
Широко доступно с JDK 9 (сент. 2017)
Как это работает
getInstanceStrong() возвращает реализацию SecureRandom, настроенную как наиболее надёжная на платформе. Это управляется свойством безопасности securerandom.strongAlgorithms.
Связанная документация
Доказательство