Генератор Bcrypt
Создает хеш пароля bcrypt со случайной солью длиной 16 байт и коэффициентом сложности от 4 до 12. Инструмент возвращает стандартную модульную строку хеша, начинающуюся с $2a$, которую принимают PHP password_verify, Node.js bcrypt, Spring Security и большинство фреймворков. Используйте инструмент для создания тестовых пользователей, сброса пароля администратора в базе данных или проверки собственного кода хеширования. Пароль не отображается в ответе и не сохраняется.
Часто задаваемые вопросы
Что такое bcrypt?
Bcrypt — функция хеширования паролей из 1999 на основе шифра Blowfish. Она объединяет случайную соль с настраиваемой сложностью: каждый дополнительный шаг сложности вдвое увеличивает объем работы, необходимой злоумышленнику для одной попытки. Эта функция по-прежнему широко поддерживается и подходит для хранения паролей.
Что означает выходная строка?
Хеш, например $2a$10$ с последующими 53 символами, содержит версию 2a, сложность 10, соль из 22 символов и хеш из 31 символа — все в собственном алфавите Base64 bcrypt. Сохраняйте строку целиком: средство проверки считывает из нее соль и сложность.
Какой коэффициент сложности выбрать?
Инструмент позволяет выбрать сложность от 4 до 12 и по умолчанию использует 10 — распространенное значение во фреймворках. Каждый шаг удваивает время вычисления, поэтому при сложности 12 хеширование занимает примерно в четыре раза больше времени, чем при 10. В рабочей среде выберите максимальную сложность, которую серверы могут обрабатывать примерно за 100–250 миллисекунд.
Почему максимальная сложность ограничена значением 12?
При большей сложности вычисление каждого хеша занимает секунды, и один запрос может надолго занять сервер. Сложность 12 уже обеспечивает достаточную защиту для большинства приложений; при необходимости вы можете повторно хешировать пароли со большей сложностью в своей среде.
Почему при каждом хешировании одного и того же пароля результат отличается?
Для каждого хеша инструмент генерирует новую случайную соль длиной 16 байт. Разные соли дают разные строки, но все они подходят для проверки одного и того же пароля. Это не позволяет злоумышленникам использовать предварительно вычисленные таблицы.
Есть ли ограничение на длину пароля?
Да. Bcrypt использует только первые 72 байта пароля, поэтому инструмент отклоняет более длинные пароли, а не игнорирует их остаток без предупреждения. Каждый символ не из ASCII занимает в UTF-8 несколько байт.
Примут ли PHP или Laravel хеш $2a$?
Да. Функции PHP password_verify, Laravel, Symfony и WordPress, использующие password_hash, принимают хеши $2a$, $2b$ и $2y$, которые различаются только исправлениями исторических ошибок. Node.js bcrypt, bcryptjs, Python bcrypt и Spring Security также принимают $2a$.
Сохраняется ли мой пароль или записывается в журнал?
Нет. Пароль используется только для вычисления хеша во время запроса. Он удаляется из ответа и никогда не записывается в журналы или хранилище.
Что выбрать: bcrypt или Argon2?
OWASP рекомендует более новый Argon2id, поскольку он требует много памяти, что повышает стоимость атак с использованием GPU. Bcrypt по-прежнему приемлем и поддерживается очень многими библиотеками, поэтому это надежный выбор, если Argon2 недоступен.
Как проверить пароль по хешу bcrypt?
Используйте Bcrypt Verifier на этом сайте или вызовите функцию verify вашего фреймворка. Никогда не сравнивайте строки bcrypt напрямую: новый хеш одного и того же пароля всегда выглядит иначе.