Создание массива из 20 случайных байтов в Java
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Если вы хотите быстро сгенерировать массив из 20 случайных байтов при помощи SecureRandom, то достаточно просто выполнить следующие действия:
byte[] randBytes = new byte[20];
new SecureRandom().nextBytes(randBytes);
Теперь массив randBytes
надежно заполнен случайными байтами. Лаконично и эффективно.
Альтернативы и соображения
В Java значительное количество различных способов достижения поставленной цели. Давайте рассмотрим некоторые из них для создания случайного массива байтов.
Использование java.util.Random
Этот инструмент существует в палитре средств Java с самого ее создания. Вот как можно воспользоваться Random
:
byte[] randomBytes = new byte[20];
new Random().nextBytes(randomBytes);
Следует помнить, что Random
не обеспечивает истинной случайности и не подходит для использования в криптографических целях.
В многопоточных условиях
Для многопоточных приложений более подходящим выбором будет ThreadLocalRandom
:
byte[] randomBytes = new byte[20];
ThreadLocalRandom.current().nextBytes(randomBytes);
Генерирование предсказуемой случайности
Иногда требуется воспроизводимая случайность, например, для целей тестирования. Это возможно за счет задания исходного значения (seed
) для Random
:
byte[] randomBytes = new byte[20];
new Random(System.currentTimeMillis()).nextBytes(randomBytes);
Однако для обеспечения надежности создание исходного значения лучше доверить SecureRandom
.
Визуализация
Представить ваш массив из 20 случайных байтов можно как ряд разноцветных стеклянных шариков:
🎒: [🔵, 🔴, ⚪, ⚫, 🟡, ... (всего 20 шариков)]
Выбор каждого из этих "шариков", иначе говоря, байтов, производится из огромной "корзины" возможных вариантов:
import java.security.SecureRandom;
byte[] randomBytes = new byte[20];
new SecureRandom().nextBytes(randomBytes);
Каждый байт в массиве является уникальным, и шанс его повторения исчезающе мал.
**Результат**:
🎒 У вас есть массив байтов с 20 случайно выбранными "шариками".
Уровень сложности: Начинающий ✔️
Усилим безопасность наших байтов
Если вам требуется максимальная безопасность, используйте SecureRandom:
SecureRandom secureRandom = SecureRandom.getInstanceStrong();
byte[] secureBytes = new byte[20];
secureRandom.nextBytes(secureBytes);
Такой подход обеспечивает максимально надежную генерацию случайных чисел.
Не забываем о возможностях SecureRandom
SecureRandom
— мощный инструмент, но его использование может вызывать повышенную нагрузку на процессор. Поэтому между безопасностью и производительностью нужно сохранять баланс.
На помощь приходят сторонние библиотеки
Библиотека Apache Commons Lang значительно упрощает процесс генерирования случайных байтов:
byte[] randomBytes = RandomUtils.nextBytes(20);
Полезные материалы
Подробнее ознакомиться с темой случайности в Java можно следующих ресурсах: