首页/安全/加密与证书速查/Blowfish 与其衍生用法
加密算法基础95 条

Blowfish 与其衍生用法

1993 年发布的 64 位分组密码:密钥 32-448 位、16 轮 Feistel;因分组偏小不再用于新协议,但其密钥编排被 bcrypt 口令散列沿用。

加密与证书速查安全更新于 2026-10-12
分组 / 密钥64 位 / 32-448 位
轮数16 轮 Feistel
来源Bruce Schneier 公开设计
衍生bcrypt(EksBlowfish)

识别遗留加密(OpenSSL 3.x legacy)

识别遗留加密(OpenSSL 3.x legacy)
openssl enc -bf-cbc -provider legacy -provider default -pbkdf2 -salt -in old.dat -out old.enc
64 位分组在长连接、大数据量场景存在 Sweet32 类碰撞风险;新系统请用 AES 或 SM4,Blowfish 只保留在 bcrypt 等专门用途中。

易错点

  • bcrypt 使用 Blowfish 的密钥编排但并非 Blowfish 加密,二者不能互相替代
  • 新版 OpenSSL 读取 Blowfish 加密的文件默认报错,需要启用 legacy provider

数据来源与参考

  • NIST SP 800-131A Rev.2(算法停用清单)
  • Provos & Mazieres, A Future-Adaptable Password Scheme(USENIX 1999)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌