CoderTools

Blowfish加解密工具

Bruce Schneier设计的快速对称分组密码

⚠️ 安全提示

Blowfish的64位分组大小在加密大量数据时可能受到生日攻击。对于需要最高安全性的新项目,建议使用AES-256。

Blowfish密钥长度: 4-56字节 (32-448位)。推荐: 16字节 (128位) 或更长
格式选项

关于Blowfish加密

Blowfish是由Bruce Schneier于1993年设计的对称密钥分组密码。它是首批不受专利限制的安全分组密码之一,可供任何人免费使用。

Blowfish使用64位分组大小,支持32位到448位的可变密钥长度。它采用16轮Feistel网络结构,使其既快速又安全,适用于大多数应用场景。

主要特点

  • 可变密钥长度: 32到448位(4到56字节),安全级别灵活可调
  • 64位分组大小: 以8字节为单位处理数据
  • 16轮Feistel网络: 提供强大的扩散和混淆
  • 快速加密: 针对32位处理器优化,比DES快得多

加密模式说明

  • CBC: 每个明文块先与前一个密文块XOR,再加密。需要IV,最安全。
  • ECB: 每个块独立加密。不需要IV,但相同明文产生相同密文。
  • CFB: 将块密码转换为流密码。需要IV。
  • OFB: 输出反馈模式,将块密码转换为流密码。需要IV。

算法对比

算法 密钥长度 分组大小 安全性 速度
Blowfish 32-448位 64 bits 良好
AES 128/192/256 bits 128 bits 优秀
DES 56 bits 64 bits 较弱
3DES 112/168 bits 64 bits 中等

安全建议

  • Blowfish的64位分组大小在使用同一密钥加密大量数据(>32GB)时容易受到生日攻击。
  • 对于需要最高安全性的新项目,建议使用AES或Blowfish的后继者Twofish。
  • 始终使用CBC或其他链接模式而非ECB,以获得更好的安全性。
  • 使用同一密钥时,每次加密操作都应使用唯一的IV。

使用场景

  • 密码哈希: bcrypt基于Blowfish,广泛用于密码存储
  • 文件加密: 适合加密单个文件和压缩包
  • VPN和安全通信: 用于OpenVPN和其他安全协议
  • 传统系统兼容: 与使用Blowfish的系统保持兼容

参考资料