Что такое Генератор случайных токенов?
Генерируйте случайные токены в шестнадцатеричном, Base64, буквенно-цифровом, URL-безопасном, цифровом, символьном или полностью своём наборе символов с помощью Web Crypto API. Используйте для API-ключей, сессионных токенов, CSRF-токенов, цифровых PIN- и OTP-кодов и ссылок сброса пароля, требующих криптографической случайности.
Все байты приходят из crypto.getRandomValues — того же источника, которым браузер генерирует TLS-ключи. Выбираете длину 16, 32, 48, 64 или 128 байт, и панель энтропии тут же показывает, сколько бит случайности это даёт в выбранном формате. За раз можно сгенерировать до 20 токенов и скачать списком в .txt для пакетного распределения.
Как использовать
- Выберите формат токена (шестнадцатеричный, Base64, буквенно-цифровой, URL-безопасный, цифровой, с символами или свой набор символов) и желаемую длину.
- Нажмите кнопку генерации, чтобы мгновенно создать криптографически безопасный случайный токен.
- Скопируйте токен или сгенерируйте несколько токенов одновременно для массового использования.
Когда использовать
- Выдача API-ключей, секретов подписи webhook'ов и токенов аутентификации между сервисами.
- Создание ссылок для сброса пароля, токенов подтверждения почты или одноразовых URL входа.
- Наполнение тестовых фикстур реалистичными случайными ID без коллизий.
Результат
Сгенерируйте 256-битный шестнадцатеричный токен (64 символа) для использования в качестве API-ключа: «a3f8b2c1d4e5f6...» с полной энтропией от crypto.getRandomValues.
Частые вопросы
- Сколько энтропии реально нужно API-ключу?
- 128 бит — практический минимум для любого долгоживущего ключа, перебор бессмыслен. Для подписи и любых криптоопераций используйте 32 байта (256 бит). Для коротких сессионных токенов хватит 16 байт.
- Чем base64 отличается от URL-Safe?
- Base64 использует + и /, плюс заполнение =, которые ломаются в URL и именах файлов. URL-Safe заменяет их на - и _ и отбрасывает заполнение. Для токенов в query string, пути или HTTP-заголовке выбирайте URL-Safe.
- Почему у алфавитно-цифрового формата энтропия ниже, чем у hex при том же числе байтов?
- Hex и base64 укладывают все 8 бит каждого байта прямо в символ. Алфавитно-цифровой формат через остаток отображает байт в один из 62 символов, теряет около 2 бит на байт и вносит небольшое смещение. Подходит для ID, слабоват для криптосекретов.
- Можно ли использовать Math.random() как запасной вариант, если Web Crypto недоступен?
- Нет. Math.random() — предсказуемый PRNG, и злоумышленник, увидевший несколько выходов, восстановит следующие. Web Crypto есть во всех браузерах с 2014 года и в современном Node.js. Если его нет — лучше вообще не генерировать секрет.
- Может ли один и тот же токен встретиться в приложении дважды?
- При 16 байтах коллизия станет вероятной только после примерно 2^64 выданных токенов (граница парадокса дней рождения). Для любых реальных нагрузок — миллиарды токенов — коллизия статистически невозможна, проверять уникальность не нужно.
Похожие инструменты
Генератор PGP-ключей
Генерируйте пары ключей шифрования PGP
Защищённые заметки
Создавайте и храните зашифрованные заметки локально
Шифрование файлов
Зашифруйте файлы с помощью AES-256
Декодер SSL-сертификатов
Декодируйте и проверяйте SSL/TLS-сертификаты
Шифр Цезаря
Шифрование сдвигом с настраиваемым смещением
Генератор парольных фраз
Создавайте надёжные и запоминающиеся парольные фразы