CyberGlossary

密码学

Blowfish

定义

Bruce Schneier 于 1993 年设计的 Feistel 分组密码,分组长度 64 位、密钥长度可变;算法本身安全,但因分组过小已被 AES 取代。

Blowfish 是 Bruce Schneier 于 1993 年设计的对称分组密码,作为 DES 与 IDEA 的快速、免版权替代品。它采用 16 轮 Feistel 结构,分组长度 64 位,密钥长度 32 至 448 位,并使用与密钥相关的大型 S 盒。从密码分析角度看,完整 16 轮的 Blowfish 至今未被破解;但 64 位分组使其在同一密钥下加密大量数据(数 GB)时易受 Sweet32 等生日攻击。因此 NIST 与现代协议推荐使用 AES 等 128 位分组的密码。Blowfish 在历史上具有重要意义,并通过 bcrypt 密码哈希、Twofish 等衍生设计延续生命,但已不再是新加密场景的推荐选择。

示例

  • 早期版本的 OpenSSH 与 OpenVPN 支持 Blowfish 的 CBC 模式。
  • bcrypt 密码哈希算法的密钥编排源自 Blowfish。

相关术语