CyberGlossary

密码学

bcrypt

别称: EksBlowfish 哈希, Provos-Mazières bcrypt

定义

基于 Blowfish 密钥编排、带可调成本参数的自适应口令哈希函数,由 Provos 与 Mazières 于 1999 年提出。

bcrypt 是 Niels Provos 与 David Mazières 在 1999 年发布的口令哈希方案,使用修改版的 Blowfish 密钥编排算法(称为 "EksBlowfish")从带盐口令派生出 192 位的哈希。其成本参数(以 log2 表示的密钥编排迭代次数)允许随着硬件进步逐步提高工作量。bcrypt 输入被硬编码限制为 72 字节,且占用内存较少,因此在面对 GPU/ASIC 攻击时不如内存密集型函数那样强。当前仍被广泛使用,在成本 >= 12 时仍可用于口令存储;但新系统建议优先选择 Argon2id 或 scrypt。

示例

  • Django 与 Spring Security 默认使用 bcrypt(成本 12)存储用户口令。
  • 典型的 bcrypt 哈希以 $2b$12$ 开头,后跟 22 字符盐和 31 字符摘要。

相关术语