Из вопроса:
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 бит.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости