Из вопроса:
new BigInteger(130, new SecureRandom()).toString(32);
Результатом будет строка из случайных букв-цифр длиной 26 символов.
Мне понятно почему 32, что это за число. Но я никак не могу понять почему именно 130. Как это число влияет на результат, на конечную длину строки.
Пожалуйста, объяснить в чём же связь.
Используется конструктор 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 бит.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Существует ли в Spring Аннотация, которая позволяет при занесении строки в таблицу удалить её через время? например, суткиИ если таковой нет,...
Возникла проблема, пытаюсь загрузить файл XLSX и у меня выдает ошибку, хотя при загрузке XLS файла все нормальноКак это можно исправить? Вроде,...
Похожие вопросы, но ответов на них так и не последовало, возможно сейчас сюда забредет гуру спринга и разложит все по полочкам: тыц и тыц