Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 105

bcrypt

ПроверилCybersecurity entrepreneur & security researcher

Что такое bcrypt?

bcryptАдаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году.


bcrypt — это схема хеширования паролей, опубликованная в 1999 году Нильсом Провосом и Дэвидом Мазьером (статья USENIX «A Future-Adaptable Password Scheme»), которая использует модифицированное расписание ключей Blowfish («EksBlowfish»), чтобы получить 192-битный хеш из пароля с солью. Затратная фаза установки ключа перемежает соль и пароль посредством повторяющихся расширений ключа, а затем 64 раза шифрует константную строку «OrpheanBeholderScryDoubt». Параметр стоимости — log2 числа раундов установки ключа — позволяет защитникам повышать трудоёмкость по мере роста производительности оборудования; стоимость 12 означает 2^12 = 4096 итераций.

Определяющая особенность — жёсткое ограничение входа bcrypt в 72 байта: всё, что выходит за 72-й байт, молча отбрасывается. Именно это вызвало инцидент с делегированной аутентификацией AD/LDAP в Okta в октябре 2024 года, когда Okta строила ключ кеша, хешируя через bcrypt userId + username + password; для пользователей с именем длиной 52 и более символов пароль оказывался за пределом отсечки в 72 байта и игнорировался, что позволяло ранее закешированным учётным данным проходить аутентификацию. Урок: предварительно хешировать длинные входные данные (например, SHA-256, затем Base64) перед bcrypt или использовать функцию без такого ограничения.

Небольшой фиксированный объём памяти bcrypt также делает его слабее, чем memory-hard конструкции, против взлома на GPU/ASIC. Он остаётся приемлемым при стоимости >= 12, но OWASP теперь рекомендует Argon2id (или scrypt) для новых систем.

flowchart TD
  P[Password + 128-bit salt] --> T{Input > 72 bytes?}
  T -->|Yes| TR[Bytes 73+ silently truncated]
  T -->|No| K
  TR --> K[EksBlowfish key setup]
  K --> C[Cost: repeat key schedule 2^cost times]
  C --> E["Encrypt 'OrpheanBeholderScryDoubt' x64"]
  E --> H["$2b$12$salt + 184-bit digest"]

Примеры

  1. 01

    Django и Spring Security хранят пароли пользователей через bcrypt со стоимостью 12 по умолчанию.

  2. 02

    Типичный bcrypt-хеш начинается с $2b$12$, за которым следуют 22 символа соли и 31 символ дайджеста.

Частые вопросы

Что такое bcrypt?

Адаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году. Относится к категории Криптография в кибербезопасности.

Что означает bcrypt?

Адаптивная функция хеширования паролей на основе шифра Blowfish с настраиваемым фактором стоимости, разработанная Provos и Mazières в 1999 году.

Как защититься от bcrypt?

Защита от bcrypt обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия bcrypt?

Распространённые альтернативные названия: Хеш EksBlowfish, bcrypt Provos-Mazières.

Связанные термины

См. также