C 语言 Triple DES 算法

2024 年 8 月 28 日 | 阅读 13 分钟

在密码学领域,三重 DES (3-DES) 是一种对称密钥分组密码,它使用数据加密标准 (DES) 加密算法对每个数据块进行三次加密。

1990 年之后,DES 用户开始对针对 DES 的穷举密钥搜索的速度感到不安。然而,用户并不希望替换 DES,因为更新广泛使用的、内置于复杂安全结构中的加密算法非常昂贵且耗时。与其完全放弃 DES,现实的方法要求改变其使用方式。因此,创建了三重 DES 的修改方案(有时称为 3DES)。

3 密钥三重 DES (3TDES) 和 2 密钥三重 DES 是三重 DES 的两个不同版本 (2TDES)。尽管三重 DES 系统明显慢于单 DES,但它们明显比单 DES 更安全。

三重 DES

以下是加密-解密过程

  • 使用单个 DES 算法和密钥 K1 加密明文块。
  • 步骤 1 的结果将使用单个 DES 和密钥 K2 进行解密。
  • 步骤 2 的输出现在应该使用单个 DES 和密钥 K3 进行加密。
  • 密文是步骤 3 的结果。
  • 密文可以逆向解密。用户使用 K2 加密,然后使用 K3 解密,再使用 K1 加密。

鉴于三重 DES 被设计为加密-解密-加密操作,通过将 K1、K2 和 K3 设置为相同的值,可以使用 3TDES(硬件)实现来实施单个 DES。这允许 DES 向后兼容。

2TDES 和 3TDES 唯一的区别是 K1 代替了 K3,而不是 K3。换句话说,用户使用密钥 K1 加密明文块,使用密钥 K2 解密它们,然后使用密钥 K1 重新加密它们。因此,2TDES 的密钥大小为 112 位。

输出

The file generated contain below cipher:
1101111001100110111011110011011111111100011101111001100110111011110011011111111100010001001100110100010101
..................................................
Process executed in 2.22 seconds
Press any key to continue.

算法解释

三重 DES 使用的“密钥束”由三个 DES 密钥 K1、K2 和 K3 组成,每个密钥测量 56 位(不包括奇偶校验位)。加密算法是

  • 使用 K1 进行 DES 加密,使用 K2 进行 DES 解密,然后使用 K3 进行 DES 加密以创建密文。
  • 解密过程相反
  • 明文等于 DK1(EK2(DK3(密文)),其中 EK2 代表加密,DK3 代表解密。