В этой статье
Что такое bcrypt?
bcrypt — это адаптивная функция хеширования паролей, разработанная в 1999 году. Основанная на шифре Blowfish, bcrypt включает соль для защиты от атак rainbow table и настраиваемый фактор стоимости, контролирующий вычислительную сложность хеша.
В отличие от быстрых хеш-функций вроде MD5 или SHA-256, bcrypt разработана специально для хранения паролей. Её адаптивная природа позволяет увеличивать фактор стоимости со временем.
Как работает bcrypt
Хеш bcrypt содержит всю информацию для проверки пароля в одной строке.
- $2b$ — идентификатор алгоритма bcrypt версии 2b
- 10$ — фактор стоимости (2^10 = 1024 раунда)
- 22 символа Base64-кодированной соли (128 бит случайности)
- 31 символ Base64-кодированного выхода хеша
Попробуйте бесплатно — без регистрации
Сгенерировать bcrypt хеш →Выбор правильного фактора стоимости
Фактор стоимости определяет количество итераций, которые bcrypt выполняет внутренне. Каждое увеличение удваивает время вычисления.
Цель — сделать хеширование достаточно медленным для сдерживания brute-force атак, но достаточно быстрым для комфортного входа.
- Стоимость 10 — хеширование около 100мс; хорошая база для большинства веб-приложений
- Стоимость 12 — хеширование около 300-400мс; рекомендуется для высокой безопасности
- Стоимость 14+ — хеширование за 1 секунду или более; обычно слишком медленно для интерактивного входа
bcrypt против других алгоритмов хеширования
Не все алгоритмы хеширования подходят для хранения паролей.
- MD5/SHA-256 — созданы для скорости; никогда не используйте для паролей
- bcrypt — нагрузка на CPU, проверен с 1999 года; рекомендация по умолчанию
- Argon2 — победитель Password Hashing Competition 2015; устойчив к памяти; рекомендуется для новых проектов
Типичные варианты использования
bcrypt используется везде, где пароли необходимо хранить безопасно.
- Регистрация пользователя — хешируйте пароль через bcrypt перед сохранением в базу данных
- Верификация входа — хешируйте введённый пароль и сравните с сохранённым хешем
- Миграция паролей — при обновлении с MD5/SHA на bcrypt перехешируйте пароли при следующем успешном входе
Часто задаваемые вопросы
Могу ли я изменить фактор стоимости без сброса паролей?
Да. При каждом успешном входе проверяйте фактор стоимости сохранённого хеша. Если он устарел, перехешируйте пароль с новым фактором. Это называется оппортунистическое перехеширование.
Как проверить пароль по хешу bcrypt?
Строка хеша bcrypt содержит версию, фактор стоимости и соль. Функция проверки извлекает их, хеширует пароль-кандидат с теми же параметрами и сравнивает результаты за постоянное время.
Следует использовать bcrypt или Argon2?
Оба — отличный выбор. bcrypt проверен более 25 лет. Argon2 новее и устойчив к памяти. Для новых проектов рекомендуется Argon2id. bcrypt остаётся абсолютно безопасным с фактором стоимости 10 или выше.