Skip to main content
CheckTown
Инструменты разработчика

bcrypt: Как работает хеширование паролей

Опубликовано 7 мин чтения
В этой статье

Что такое 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 или выше.

Похожие инструменты