CoderTools

CAST5 (CAST-128) 加密/解密

可变密钥长度的安全对称分组密码(40-128位)

安全提示

本工具仅供教育和测试使用。对于需要高安全性的生产环境,建议使用 AES-256 或其他现代加密算法。切勿分享您的加密密钥。

CAST5 支持可变密钥长度:40-128位(5-16字节)。建议使用128位密钥以获得最高安全性。
格式选项

关于 CAST5 (CAST-128) 加密

CAST5(又称 CAST-128)由 Carlisle Adams 和 Stafford Tavares 在北电(Nortel)设计,于 1996 年作为 RFC 2144 发布。算法名称 CAST 来自两位设计者姓名首字母:Carlisle Adams Stafford Tavares。采用 64 位分组,支持 40 至 128 位以 8 位步进的可变密钥长度。被选为 OpenPGP(RFC 4880)强制实现的对称密码,也是 GnuPG 1.x 版本(1.4 及以前)的默认批量加密算法。

CAST5 使用三种不同的轮函数——Type 1(XOR 输出)、Type 2(减法输出)、Type 3(加法输出)——在各轮次中按固定顺序从 8 个 32 位输出 S 盒中选取不同对。80 位及以下密钥使用 12 轮,更长密钥使用 16 轮。8 个 S 盒由弯曲布尔函数构造,赋予 CAST5 在设计阶段便已正式确立的抵抗差分密码分析的可证明界限,而非事后经验推导。

主要特性

  • 可变密钥长度:40–128 位,以 8 位步进——单一算法同时支持 1990 年代美国出口限制的 40 位密钥层级和完整的 128 位安全强度
  • 三种不同的轮函数(Type 1 XOR / Type 2 减法 / Type 3 加法)在各轮中交替使用,每种函数选取 8 个 32×8 位 S 盒中不同的两个
  • 密钥 ≤ 80 位使用 12 轮,81–128 位密钥使用 16 轮——明确的轮次补偿机制,弥补较短密钥的熵不足
  • 免版税算法,无专利限制

加密模式说明

  • CBC: 密码块链接模式——每个 64 位 CAST5 分组在进入 12 或 16 轮费斯特尔轮函数序列之前,先与前一密文块异或。注意:OpenPGP(RFC 4880 §13.9)规定批量加密使用带重同步的 CFB 而非 CBC;CBC 适用于 SSH2 上下文中使用 CAST5 时(CAST128-CBC,RFC 4253)。
  • ECB: 电子密码本模式——每个 64 位 CAST5 分组独立经过 12 或 16 轮处理。相同的 64 位明文块始终产生相同密文,暴露数据重复模式。在 64 位分组宽度下,生日界碰撞在约 2³² 个分组(~32 GB 同一密钥加密)后概率达到 50%——完全避免使用 ECB 模式。
  • CTR: 计数器模式 - 将分组密码转换为流密码,支持并行处理
  • CFB: 密码反馈模式——OpenPGP(RFC 4880 §13.9)强制要求的模式:64 位 CFB 配合消息起始处两个分组的重同步步骤。这种 OpenPGP 专用的带重同步 CFB 允许接收方恢复同步,并在丢弃损坏数据前检测前导块是否被篡改。
  • OFB: 输出反馈模式——CAST5 的块函数反复对 IV 重新加密生成与明文无关的密钥流。当 IV 为 64 位时,密钥流的统计周期受生日界约束,约为 2³² 个循环;对于大型或长期数据流,应定期刷新 IV,防止密钥流循环被重复使用。
  • RAW: 单块模式 - 直接加密不进行链接,仅用于单个8字节块

算法对比

算法 密钥长度 分组大小 安全性 速度
CAST5 (CAST-128) 40-128位 64 bits 良好 快速
Blowfish 32-448 bits 64 bits 良好 快速
AES 128/192/256 bits 128 bits 优秀 快速
Twofish 128/192/256 bits 128 bits 优秀 快速

安全注意事项

  • CAST5-128 的完整轮次版本目前无已知实际攻击;最佳密码分析仅到达 16 轮中的第 6 轮。但以 40 位出口密钥使用时,暴力破解即可轻易攻破——任何现代部署中均不得使用短于 128 位的密钥。
  • 64 位分组大小是 CAST5 的核心限制:CBC 或 CFB 模式下,约在 2³² 个分组(每个密钥约 32 GB)之后便会出现生日界统计泄漏。OpenPGP 通过每条消息使用独立会话密钥来规避这一问题,但长时间运行的流式使用场景在处理大数据量时必须轮换密钥。
  • OpenPGP(RFC 4880 §9.2)将 CAST5 列为必须实现的算法,以确保与 GnuPG 1.x 和 PGP 8.x 客户端的互操作性。新实现在生成消息时应优先选择 AES-256——CAST5 是接收端的兼容性要求,而非新消息输出的推荐默认选项。
  • 所有新设计均应以 AES-128-CBC 或 AES-256-GCM 替代 CAST5。迁移的主要动因是 64 位分组限制,而非算法本身的密码分析弱点——在使用足够长的密钥且 IV 管理正确时,CAST5-128 本身并未被攻破。

常见用途

  • OpenPGP 电子邮件和文件加密互操作性:RFC 4880 §9.2 要求所有符合规范的 OpenPGP 实现必须支持 CAST5,以确保与尚未更新密码偏好的 GnuPG 1.x 和 PGP 8.x 用户互通
  • GnuPG 1.x 对称加密:GnuPG 1.0 至 1.4.x 默认使用 CAST5 进行对称密钥(口令)加密。解密这些 GnuPG 版本生成的文件或签名消息需要 CAST5 支持,除非原始发送方在密钥偏好中明确选择了 AES
  • SSH2 CAST128-CBC 传输密码:RFC 4253 将 CAST128-CBC 定义为 SSH 传输层推荐支持(SHOULD)的密码。固件受限的旧式 SSH 服务器和嵌入式设备,在 AES 密码套件不可用时,可能在握手期间协商 CAST128-CBC
  • 取证与归档解密:1990 年代末至 2000 年代中期的 PGP 加密邮件、磁盘归档及备份集通常以 CAST5 作为批量加密密码。即使当前系统不再生成 CAST5 加密内容,数据恢复仍需 CAST5 支持

参考资料

快捷菜单

暂无访问记录