Хеширование и проверка Bcrypt

Создавайте солёные bcrypt-хеши для паролей и проверяйте открытый текст по существующему хешу — всё в вашем браузере.

Создавайте солёные bcrypt-хеши для паролей и проверяйте открытый текст по существующему хешу — всё в вашем браузере. Создавайте солёные bcrypt-хеши для паролей и проверяйте открытый текст по существующему хешу — всё в вашем браузере.

Сгенерированный bcrypt-хеш

Предыстория

Что такое bcrypt и почему это важно

bcrypt — это адаптивная функция хеширования паролей, разработанная Нильсом Провосом и Дэвидом Мазьером в 1999 году. В отличие от быстрых хешей вроде MD5 или SHA-256, bcrypt намеренно тратит время процессора: каждый хеш прогоняет шифр Blowfish через настраиваемое число раундов, и работа удваивается с каждым увеличением фактора стоимости. Это замедление и делает офлайн-атаки по словарю и перебором дорогостоящими. Корректная реализация bcrypt также встраивает случайную 128-битную соль в выходную строку, поэтому два хеша одного и того же пароля всегда разные, и радужные таблицы против него бесполезны.

Как читать bcrypt-хеш

bcrypt-хеш выглядит как $2b$12$e0.6kJ8a5X8u5Yp3qR5E0e9dF4z3W2c1v0b9n8m7l6k5j4h3g2f1. Части после ведущих знаков доллара несут версию алгоритма, стоимость и соль:

  • $2b$ -- ревизия алгоритма. $2a$ и $2y$ — более старые варианты с тонкими различиями в обработке 8-битного знакового бага; $2b$ — текущая рекомендация и то, что выдаёт bcryptjs.
  • 12 -- фактор стоимости. 2^12 = 4096 раундов расписания ключа. Каждый +1 удваивает время; 10–12 — разумное значение по умолчанию для интерактивного входа, а 12–14 подходит для хранимых учётных данных.
  • Оставшиеся 53 символа содержат 22-символьную (128-битную) base64-соль плюс 31-символьную (184-битную) контрольную сумму. Вся строка — это самодостаточная запись: проверяющий считывает версию, стоимость и соль обратно из хеша и заново запускает вывод, чтобы сравнить.

Как пользоваться этим инструментом

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

Замечания и ограничения безопасности

bcrypt обрезает ввод до 72 байт: более длинные пароли молча отсекаются, поэтому два пароля с общими первыми 72 байтами сравниваются как равные. Если нужны более длинные вводы, предварительно хешируйте SHA-256 (в hex) и хешируйте этот дайджест. bcrypt — намеренно маломемориальный алгоритм — он хуже сопротивляется массивам GPU, чем memory-hard схемы вроде Argon2 или scrypt, но его таблица 4 КБ и состояние 64 байта всё равно делают дёшевый ASIC-взлом непривлекательным. Для совершенно новых систем Argon2id часто лучший выбор; bcrypt остаётся отличным, широко поддерживаемым вариантом для обратной совместимости и для случаев, когда среда выполнения не может предоставить Argon2. Эта страница работает полностью в вашем браузере: пароль и хеш никогда не покидают ваше устройство, и вы можете изучить код (MIT/BSD bcryptjs), включённый в public/assets.

Создано с использованием библиотеки bcryptjs под лицензией BSD-3-Clause, включённой в public/assets. Хеширование выполняется локально; ничего не передаётся.

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

Почему один и тот же пароль каждый раз даёт разный хеш?
Для каждого хеша генерируется случайная 128-битная соль и встраивается в вывод. Проверяющий повторно считывает соль из хеша, поэтому корректность не нарушается, но одинаковые вводы никогда не дают одинаковых выводов.
Какой фактор стоимости использовать?
Для интерактивного входа хорошее значение по умолчанию — 10–12. Для хранимых учётных данных можно взять 12–14. Бóльшая стоимость безопаснее, но медленнее; выберите максимальное значение, которое ваш сервер может позволить на один вход.
Всё ещё ли bcrypt рекомендуется в 2026?
Да. bcrypt остаётся широко применяемым и считается безопасным при использовании со стоимостью 10+. Для совершенно новых систем часто предпочитают memory-hard Argon2id или scrypt, но bcrypt — хороший, проверенный боями выбор, особенно там, где они недоступны.
Почему bcrypt медленнее, чем SHA-256?
В этом и есть суть. SHA-256 создан быть быстрым, что позволяет атакующим делать миллиарды догадок в секунду. Дорогое расписание ключа и соль bcrypt заставляют атакующего тратить реальное время на каждую догадку, делая офлайн-атаки непрактичными.
Что означает ограничение в 72 байта для моих паролей?
bcrypt игнорирует всё после 72-го байта. Два пароля длиннее 72 байт с одинаковым префиксом проверятся как идентичные. Чтобы поддерживать более длинные секреты, сначала хешируйте их SHA-256 (в hex) и хешируйте дайджест.
Отправляется ли мой пароль на сервер?
Нет. Всё работает локально в вашем браузере с включённой библиотекой bcryptjs. Вы можете отключиться от сети после загрузки страницы, и она всё равно будет работать.