Генератор bcrypt-хешей

Создать хэш

Выше = медленнее и безопаснее.

Иногда у вас есть bcrypt-хеш из старого бэкапа и пароль в открытом виде, и нужно понять, совпадают ли они. Или у вас есть пароль и нужен хеш, который дал бы определённый фактор стоимости (cost). Этот инструмент делает и то и другое: введите пароль — он создаст новый хеш; вставьте хеш и пароль-кандидат — он скажет, проходит ли проверка, используя то же сравнение за постоянное время, что и проверка входа в продакшене.

Сгенерировать или проверить bcrypt

  1. 1

    Выберите режим

    Сгенерируйте новый хеш из пароля или проверьте пароль относительно существующего хеша `$2a$` / `$2b$` / `$2y$`.

  2. 2

    Для генерации: введите текст и cost

    Cost от 4 до 14; 10-12 — обычный диапазон. Для каждого хеша создаётся случайная соль (salt) из 16 байт.

  3. 3

    Для проверки: вставьте хеш и текст

    Инструмент извлекает соль и cost из хеша и заново хеширует текст с теми же параметрами.

  4. 4

    Прочитайте результат

    Режим генерации копирует 60-символьный хеш; режим проверки возвращает зелёное совпадение или красное несовпадение.

Как устроен режим проверки

Для сохранённого хеша вроде:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

Проверяющий механизм:

  1. Разбирает версию (2b), cost (12), соль (первые 22 символа после cost) и дайджест (последний 31 символ).
  2. Повторно запускает bcrypt для пароля-кандидата с извлечёнными солью и cost.
  3. Сравнивает получившийся дайджест с исходным с помощью сравнения за постоянное время.

Успешное сравнение даёт true; любое отличие даёт false.

Сравнение за постоянное время

Сравнение двух строк наивным == завершается сразу, как только отличается байт — это временной побочный канал, который при достаточном числе замеров может выдавать хеш по одному знаку за раз. Проверки паролей в продакшене (и этот инструмент) используют сравнение за постоянное время, которое всегда проверяет каждый байт, поэтому время решения не зависит от того, сколько первых байтов совпало.

Частые диагностические случаи

Симптом Вероятная причина
Проверка не проходит, хотя в пароле вы уверены Концевые пробелы или BOM во вводе. Удалите и то и другое.
Проверка не проходит, версия 2y Некоторые библиотеки не любят 2y; он валиден и совместим. В дальнейшем перехешируйте в 2b.
Хеш слишком короткий / повреждён Это не bcrypt-хеш. MD5 — это 32 hex-символа, SHA-1 — 40, bcrypt — 60 с разделителями $.
Предупреждение о несовпадении cost Сохранённый cost ниже минимума вашей политики. Перехешируйте при следующем успешном входе.

Перехеширование при входе

Хорошая практика: когда пользователь успешно входит, проверьте, не ниже ли cost сохранённого хеша вашей текущей политики. Если ниже, перехешируйте пароль с новым cost и обновите базу данных. За несколько месяцев так можно поднять всю базу пользователей, никого не прося менять пароль.

Чего инструмент не делает

  • Массовая проверка — рассчитан на один хеш за раз.
  • Взлом или подбор перебором — атаки по словарю и через радужные таблицы намеренно вне области применения.
  • Восстановление пароля — bcrypt односторонний; если пароль забыт, единственный путь — сброс.

Часто задаваемые вопросы

Нет. Хеширование и проверка происходят в вашем браузере. Ни пароль, ни хеш не покидают страницу.

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

Да, именно это делает режим проверки: вставьте имеющийся хеш, вставьте пароль-кандидат, и инструмент подтвердит или отвергнет совпадение.

Да. Все современные варианты совместимы между собой — дайджест совместим между версиями; отличается только метка. Некоторым старым хешам $2$ из систем эпохи 2000-х может потребоваться библиотека с явной поддержкой устаревших форматов.

Сопутствующие инструменты

Кодировщик шифра A1Z26

Кодируйте текст шифром A1Z26 (A=1, B=2, ... Z=26) или декодируйте числовую последовательность обратно в буквы, выбрав разделитель.

Шифрование / расшифровка AES

Шифруйте и расшифровывайте текст низкого риска с AES-шифрами OpenSSL. Парольная фраза хэшируется SHA-256, а Base64-вывод содержит IV плюс шифротекст.

Кодировщик шифра Атбаш

Кодируйте или декодируйте текст шифром Атбаш, еврейской заменой, где A-Z отображается в Z-A. Одна и та же операция шифрует и расшифровывает.

Кодировщик и декодировщик Base32

Кодируйте и декодируйте строки Base32 с алфавитом RFC 4648. Полезно для секретов TOTP, регистронезависимых токенов и идентификаторов, которые вводит человек.

Генератор bcrypt

Сгенерируйте bcrypt hash из plaintext password. Настраиваемый cost factor от 4 до 14, совместим с Laravel, Django, Node и PHP.

Кодировщик и декодировщик Base85

Кодируйте и декодируйте Base85 в вариантах Adobe Ascii85 (PostScript/PDF) или Z85 (ZeroMQ). Компактнее Base64 для двоичных данных.