Генерация случайной строки

64
19 января 2022, 15:10

Из вопроса:

new BigInteger(130, new SecureRandom()).toString(32);

Результатом будет строка из случайных букв-цифр длиной 26 символов.

Мне понятно почему 32, что это за число. Но я никак не могу понять почему именно 130. Как это число влияет на результат, на конечную длину строки.
Пожалуйста, объяснить в чём же связь.

Answer 1

Используется конструктор BigInteger с указанием максимальной длины случайного числа в битах.

130 бит соответствует 26 цифрам при использовании toString(32), т.к. каждые 5 бит преобразуются в одну цифру (2^5=32)

При использовании другого основания (radix) вместо 32 нужно учитывать количество требуемых битов - двоичный логарифм основания.

bits_per_digit = ln(radix) / ln(2)

Например, на каждую цифру по основанию 36 требуется 5.17 бит. Умножаем 5.17 на число цифр, округляем вверх. Для 26 цифр это будет 135 бит.

READ ALSO
Java Spring добавление временной строки в бд

Java Spring добавление временной строки в бд

Существует ли в Spring Аннотация, которая позволяет при занесении строки в таблицу удалить её через время? например, суткиИ если таковой нет,...

79
Обработка исключений в Spring Boot

Обработка исключений в Spring Boot

Имеется база mysql/postgresНет никакого серверного приложения

68
Ошибка NoClassDefFoundError в Apache Poi

Ошибка NoClassDefFoundError в Apache Poi

Возникла проблема, пытаюсь загрузить файл XLSX и у меня выдает ошибку, хотя при загрузке XLS файла все нормальноКак это можно исправить? Вроде,...

78
Spring @Controller + BeanPostProcessor with proxy

Spring @Controller + BeanPostProcessor with proxy

Похожие вопросы, но ответов на них так и не последовало, возможно сейчас сюда забредет гуру спринга и разложит все по полочкам: тыц и тыц

178