Создание массива из 20 случайных байтов в Java

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы хотите быстро сгенерировать массив из 20 случайных байтов при помощи SecureRandom, то достаточно просто выполнить следующие действия:

Java
Скопировать код
byte[] randBytes = new byte[20];
new SecureRandom().nextBytes(randBytes);

Теперь массив randBytes надежно заполнен случайными байтами. Лаконично и эффективно.

Альтернативы и соображения

В Java значительное количество различных способов достижения поставленной цели. Давайте рассмотрим некоторые из них для создания случайного массива байтов.

Использование java.util.Random

Этот инструмент существует в палитре средств Java с самого ее создания. Вот как можно воспользоваться Random:

Java
Скопировать код
byte[] randomBytes = new byte[20];
new Random().nextBytes(randomBytes);

Следует помнить, что Random не обеспечивает истинной случайности и не подходит для использования в криптографических целях.

В многопоточных условиях

Для многопоточных приложений более подходящим выбором будет ThreadLocalRandom:

Java
Скопировать код
byte[] randomBytes = new byte[20];
ThreadLocalRandom.current().nextBytes(randomBytes);

Генерирование предсказуемой случайности

Иногда требуется воспроизводимая случайность, например, для целей тестирования. Это возможно за счет задания исходного значения (seed) для Random:

Java
Скопировать код
byte[] randomBytes = new byte[20];
new Random(System.currentTimeMillis()).nextBytes(randomBytes);

Однако для обеспечения надежности создание исходного значения лучше доверить SecureRandom.

Визуализация

Представить ваш массив из 20 случайных байтов можно как ряд разноцветных стеклянных шариков:

Markdown
Скопировать код
🎒: [🔵, 🔴, ⚪, ⚫, 🟡, ... (всего 20 шариков)]

Выбор каждого из этих "шариков", иначе говоря, байтов, производится из огромной "корзины" возможных вариантов:

Java
Скопировать код
import java.security.SecureRandom;

byte[] randomBytes = new byte[20];
new SecureRandom().nextBytes(randomBytes);

Каждый байт в массиве является уникальным, и шанс его повторения исчезающе мал.

Markdown
Скопировать код
**Результат**:
🎒 У вас есть массив байтов с 20 случайно выбранными "шариками".

Уровень сложности: Начинающий ✔️

Усилим безопасность наших байтов

Если вам требуется максимальная безопасность, используйте SecureRandom:

Java
Скопировать код
SecureRandom secureRandom = SecureRandom.getInstanceStrong();
byte[] secureBytes = new byte[20];
secureRandom.nextBytes(secureBytes);

Такой подход обеспечивает максимально надежную генерацию случайных чисел.

Не забываем о возможностях SecureRandom

SecureRandom — мощный инструмент, но его использование может вызывать повышенную нагрузку на процессор. Поэтому между безопасностью и производительностью нужно сохранять баланс.

На помощь приходят сторонние библиотеки

Библиотека Apache Commons Lang значительно упрощает процесс генерирования случайных байтов:

Java
Скопировать код
byte[] randomBytes = RandomUtils.nextBytes(20);

Полезные материалы

Подробнее ознакомиться с темой случайности в Java можно следующих ресурсах:

  1. SecureRandom (Java Platform SE 8)
  2. Примеры использования Random в Java
  3. Подробно о классе Java SecureRandom