Генератор bcrypt-хешей
Создать хэш
Выше = медленнее и безопаснее.
Иногда у вас есть bcrypt-хеш из старого бэкапа и пароль в открытом виде, и нужно понять, совпадают ли они. Или у вас есть пароль и нужен хеш, который дал бы определённый фактор стоимости (cost). Этот инструмент делает и то и другое: введите пароль — он создаст новый хеш; вставьте хеш и пароль-кандидат — он скажет, проходит ли проверка, используя то же сравнение за постоянное время, что и проверка входа в продакшене.
Сгенерировать или проверить bcrypt
-
1
Выберите режим
Сгенерируйте новый хеш из пароля или проверьте пароль относительно существующего хеша `$2a$` / `$2b$` / `$2y$`.
-
2
Для генерации: введите текст и cost
Cost от 4 до 14; 10-12 — обычный диапазон. Для каждого хеша создаётся случайная соль (salt) из 16 байт.
-
3
Для проверки: вставьте хеш и текст
Инструмент извлекает соль и cost из хеша и заново хеширует текст с теми же параметрами.
-
4
Прочитайте результат
Режим генерации копирует 60-символьный хеш; режим проверки возвращает зелёное совпадение или красное несовпадение.
Как устроен режим проверки
Для сохранённого хеша вроде:
$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
Проверяющий механизм:
- Разбирает версию (
2b), cost (12), соль (первые 22 символа после cost) и дайджест (последний 31 символ). - Повторно запускает bcrypt для пароля-кандидата с извлечёнными солью и cost.
- Сравнивает получившийся дайджест с исходным с помощью сравнения за постоянное время.
Успешное сравнение даёт 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 для двоичных данных.