Инструменты
Руководства

Генератор соли и случайных токенов

Крипто

Создаёт криптографически стойкие случайные соли и токены в hex или Base64 через crypto.getRandomValues.

100 % на клиенте Без бэкенда
На этой странице

Что такое соль?#

Соль — это фрагмент случайных данных, который подмешивают в процесс хеширования, чтобы два одинаковых входа дали разные выходы. Её задача — уникальность, а не секретность: соль может лежать открытым текстом рядом с защищаемым ею хешем и всё равно громить атаку, рассчитанную на то, что у каждого пользователя с одним паролем будет одинаковый дайджест. Когда у каждого пароля своя соль, атакующий не может переиспользовать одну заранее вычисленную таблицу на всю базу — приходится пересчитывать для каждой записи.

Страница генерирует криптостойкие случайные байты через crypto.getRandomValues и отдаёт их в трёх кодировках: Hex (два символа на байт, стандарт для паролей и токенов целостности), Base64 (компактнее) и Base64url (URL- и файлобезопасный вариант, который заменяет +// на -/_ и убирает паддинг =, применяется в JWT и подписанных URL).

Тот же примитив служит универсальным генератором случайных токенов: API-ключи, nonce, непрозрачные идентификаторы и одноразовые токены — всё это «немного случайных байтов, закодированных текстом», что именно здесь и получается.

Как пользоваться#

  1. Задайте количество байтов. Значение по умолчанию 16 (128 бит) — стандартный размер соли; поле принимает до 8192 для случаев, когда нужен более длинный токен.
  2. Выберите Формат вывода: Hex, Base64 или Base64url.
  3. Нажмите Создать, затем Копировать. Строка состояния показывает, сколько бит энтропии представляет результат (байты × 8), чтобы вы могли с одного взгляда убедиться, что получили именно то, что просили.

Ключевые возможности#

  • Несмещённые случайные байты. Берутся из crypto.getRandomValues — криптостойкого генератора браузера.
  • Три кодировки. Hex — для солей и контрольных сумм; Base64 — для компактных токенов; Base64url — для всего, что путешествует в URL, имени файла или JSON.
  • Честная энтропия. Строка состояния указывает фактическое число бит, а не длину закодированной строки, которую легко прочитать неверно.
  • До 8192 байт. Один и тот же инструмент служит и для 16-байтной соли, и для 256-байтного ключевого блоба.
  • Без отправки данных. Генерация локальна; случайные байты не передаются.

Разбор примера#

Сгенерируйте 16 байт в каждом из трёх форматов. 16 байт — это 128 бит энтропии, а длины закодированного выхода фиксированы независимо от случайных значений:

  • Hex — 32 символа, напр. 7a4c9f1e0b8d2635c4a1e9f07b2d4861
  • Base64 — 24 символа с паддингом ==, напр. 8MDwarqMD7B594C5hCB1zQ==
  • Base64url — 22 символа, паддинг снят, напр. 8MDwarqMD7B594C5hCB1zQ

(Значения выше показывают форму; ваш фактический выход при каждом нажатии отличается, потому что байты свежеслучайные.) Поставьте 32 байта для 256-битной соли или ключа, и длины вырастут детерминированно: 64 Hex-символа, 44 Base64-символа, 43 Base64url-символа. Это фиксированное соотношение между числом байт и длиной кодированного выхода — быстрый способ убедиться, что вы сгенерировали именно тот размер, что задумали.

FAQ#

Должна ли соль быть секретной?#

Нет. Назначение соли — уникальность: она гарантирует, что хеширование одного и того же пароля дважды даёт разные дайджесты. Она хранится рядом с хешем открытым текстом, и это не ослабляет схему. То, что действительно должно оставаться секретом, — это ключ в HMAC или пароль при шифровании, а не соль.

Сколько байт генерировать?#

16 байт (128 бит) — стандарт для парольных солей и большинства токенов: это делает случайные совпадения практически невозможными. Для сессионных токенов или того, что должно долго прожить под натиском хорошо финансируемого атакующего, 32 байта (256 бит) — комфортный запас. Сверх этого обычно излишне, если только конкретный протокол не требует иного.

В чём разница между Base64 и Base64url?#

И та и другая кодируют одни и те же байты, но Base64 использует + и /, что ломает URL и имена файлов, и паддинг =. Base64url заменяет их на - и _ и убирает паддинг, поэтому результат можно вставить прямо в путь URL, в строку запроса или в имя файла без экранирования. Используйте Base64url для JWT, подписанных URL и непрозрачных токенов; обычный Base64 — когда выход остаётся внутри полей данных.

Можно ли использовать это как API-ключ?#

Да. Сгенерируйте 32 байта в Base64url — и у вас 43-символьный токен со 256 битами энтропии: более чем достаточно для API-ключа или долгоживущего bearer-токена. Только не забудьте сразу его скопировать: значение генерируется локально и восстановить его позже нельзя.