Этот инструмент генерирует криптостойкий случайный ключевой материал. В отличие от существующих генераторов случайных строк и паролей (использующих Math.random() и непригодных для секретов), этот инструмент энтропийно-управляемый и на базе CSPRNG.
Ввод, управляемый энтропией. Вы задаёте целевую энтропию в битах (по умолчанию 256, шаг 8) — нужную стойкость — и инструмент сам выводит число байт (bytes = ceil(bits/8)). Это правильная мысленная модель для ключей: секрету JWT HS256 нужно 256 бит энтропии независимо от того, сколькими символами он представлен. Думайте не «сколько символов», а «сколько стойкости».
Две ветви вывода:
Байтовая кодировка (по умолчанию — оставьте Свой алфавит пустым). Генерирует ceil(entropyBits/8) случайных байт через crypto.randomBytes() и показывает тот же материал в трёх кодировках рядом — hex, base64, base64url — чтобы вы скопировали ту, что ожидает потребитель. Каждый байт даёт 8 бит энтропии, поэтому фактическая энтропия всегда равна запрошенной.
Свой алфавит (заполните Свой алфавит). Выбирает crypto.randomInt(размерАлфавита) на символ — внутренний отсев Node, без модульного смещения, без ручного цикла. Фактическая энтропия длина × log₂(размерАлфавита), может быть меньше запрошенной (напр. алфавит из 32 символов × 10 знаков = 50 бит, а не 256); инструмент предупреждает красным, когда так — короткая строка со своим алфавитом может быть намного слабее, чем кажется.
Зачем три кодировки рядом? 256-битный ключ — это 64 hex-символа, ~44 base64 или 43 base64url. Разные системы ждут разные форматы; показ всех трёх позволяет выбрать верный без перезапуска.
Сценарии: ключи AES-256, ключи HMAC, секреты подписи JWT, API-ключи, секреты сессий, любое значение, которое злоумышленник не должен угадать. crypto.randomBytes() и crypto.randomInt() берут из CSPRNG ОС — никогда Math.random().