首页/安全/加密与证书速查/bcrypt 口令散列
本包目录(305 条)
加密算法基础95 条
TLS 与 HTTPS60 条证书与 PKI30 条OpenSSL 实战30 条证书运维排查49 条密钥管理41 条

bcrypt 口令散列

基于 Blowfish 密钥编排的自适应散列,cost 因子每加 1 计算量翻倍;在 Unix 口令与 Web 应用中使用广泛,注意 72 字节输入上限。

加密与证书速查安全更新于 2026-10-12
标识$2b$(部分旧实现为 $2a$/$2y$)
cost建议 10 以上(按硬件基准调整)
输入上限72 字节,超出部分被截断
标准来源USENIX 1999 论文(Provos & Mazieres)

生成与校验

生成与校验
htpasswd -bnBC 12 user 'password'      # 输出 user:$2y$12$...
# Python
import bcrypt
h = bcrypt.hashpw(b'password', bcrypt.gensalt(rounds=12))
bcrypt.checkpw(b'password', h)
超过 72 字节的口令会被静默截断;长口令场景先做 SHA-256 预处理(并在文档中说明),或改用 Argon2id。

易错点

  • $2a$/$2b$/$2y$ 前缀差异影响高位字符与长度校验行为,跨语言对接前先做兼容性测试
  • cost 过高的副作用是登录接口 CPU 压力大,容易被做成长耗时攻击面,需配合限流

数据来源与参考

  • USENIX 1999(bcrypt 原始论文)
  • OWASP Password Storage Cheat Sheet
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌