Что делает инструмент
bcrypt — функция хеширования паролей, специально сделанная медленной. В отличие от MD5 или SHA-256, которые вычисляются миллиарды раз в секунду, у bcrypt есть настраиваемая стоимость, делающая каждую попытку подбора дорогой для злоумышленника, укравшего базу данных. Наряду с Argon2 и scrypt это по-прежнему один из самых распространённых способов хранить пароли.
Инструмент умеет две вещи:
- Хешировать: превратить пароль в хеш bcrypt с выбранной стоимостью и префиксом версии.
- Проверить: узнать, соответствует ли пароль существующему хешу bcrypt, например из вашей базы данных или seed-файла фреймворка.
Как пользоваться
- Введите Пароль или нажмите Пример.
- В режиме Хешировать выберите Стоимость и Версию. Хеш появляется сразу; нажмите Новая соль, чтобы получить другой.
- В режиме Проверить вставьте Хеш bcrypt для проверки. Результат покажет, совпадает ли пароль.
Как читать хеш bcrypt
Хеш вида $2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK состоит из четырёх частей: версии 2b, стоимости 10 (2¹⁰ раундов подготовки ключа), соли из 22 символов и контрольной суммы из 31 символа. Всё, что понадобится серверу для последующей проверки пароля, содержится в этой одной строке, поэтому хранить нужно только хеш.
Ограничения
bcrypt читает только первые 72 байта пароля. Более длинные пароли или пароли с большим количеством не-ASCII символов (каждый занимает 2–4 байта в UTF-8) молча обрезаются. Инструмент предупредит, если это произошло. Если нужно принимать очень длинные парольные фразы, хешируйте их заранее или рассмотрите Argon2id.
Частые вопросы
› Почему для одного и того же пароля каждый раз получается другой хеш?
Каждый хеш использует новую случайную соль длиной 16 байт, которая хранится внутри самого хеша. Это сделано намеренно, чтобы одинаковые пароли не давали одинаковых хешей. Чтобы проверить пароль, используйте режим «Проверить», а не сравнивайте строки хешей.
› Какую стоимость выбрать?
Выберите максимальную стоимость, которую сервер выдерживает при каждом входе, — сегодня обычно 10–12. Каждый шаг удваивает работу. Измерьте на рабочем оборудовании; распространённая цель — 100–300 мс на хеш.
› Чем отличаются $2a$, $2b$ и $2y$?
Это один и тот же алгоритм. $2b$ — текущий префикс OpenBSD, $2y$ пишет password_hash в PHP, $2a$ — более старый. Большинство библиотек принимают все три, поэтому выберите тот, который ожидает ваша система.
› Отправляется ли мой пароль куда-нибудь?
Нет. Хеширование и проверка выполняются в браузере. Пароль и проверяемый хеш хранятся только в памяти этой страницы: они не сохраняются и не добавляются в ссылки для отправки.