DES / 3DES

DES及TripleDES加密解密 — 支持ECB/CBC模式、多编码格式

DES/3DES 加解密



需要 16 个十六进制字符 (8字节, 56位有效密钥)
CBC模式必填,16个十六进制字符


关于 DES / 3DES

DES (Data Encryption Standard)

DES(数据加密标准)是 IBM 于 1970 年代开发的对称分组加密算法,1977 年被美国国家标准局(NIST 前身)采纳为联邦标准(FIPS PUB 46)。DES 使用 64位分组56位有效密钥(密钥实际上是64位,其中每8位有一位奇偶校验位),经过 16轮 Feistel 网络 处理。其算法结构包含初始置换(IP)、16轮迭代(扩展置换、S-盒替换、P-置换)和逆初始置换(FP)。

DES 的核心安全来自 S-盒(Substitution Boxes),共 8 个 S-盒,每个将 6 位输入映射为 4 位输出。S-盒的设计准则至今仍部分属于机密。DES 的解密使用与加密完全相同的算法,仅将子密钥顺序反转。

3DES (Triple DES / TDEA)

3DES(又称 TDEA)是对原始 DES 的增强,通过对数据执行三次 DES 操作来提高安全性。标准模式为 EDE(Encrypt-Decrypt-Encrypt):用 K1 加密,K2 解密(逆向一轮),K3 加密。解密时顺序相反。根据密钥长度分为:

  • 3DES-3T(三密钥):K1 ≠ K2 ≠ K3,168位有效密钥,最高安全性
  • 3DES-2T(双密钥):K1 ≠ K2,K3 = K1,112位有效密钥。这是最常见的 3DES 应用方式
  • 单密钥 3DES(K1 = K2 = K3)退化为普通 DES

加密模式

模式名称特点安全性
ECB电子密码本每个分组独立加密,可并行,相同明文得相同密文泄露明文模式,不推荐
CBC密码分组链接每分组与前一组密文异或后加密,需初始向量(IV)隐藏明文模式,推荐

ECB 模式对每个 64 位分组独立加密,相同的明文块产生相同的密文块,易受字典攻击和模式分析。著名的"企鹅图"展示了 ECB 的缺陷(加密后图像轮廓依然可见)。CBC 模式通过 IV 和前一分组引入随机性,消除明文模式,但加密过程串行、速度较慢。

填充方式

填充方法说明
PKCS7缺少 N 字节则填充 N 个值为 N 的字节最广泛使用的填充,始终填充(至少1字节)
Zero缺少 N 字节则填充 N 个 0x00简单但有歧义(无法区分填充与数据中的 0x00)
不做填充,要求输入必须是 8 字节整数倍适用于已经对齐的二进制数据

安全性评估

DES:56位密钥在现代已不安全。1999 年 EFF 的 Deep Crack 专用机在 22 小时内破解 DES。2017 年,NIST 正式撤销 DES 作为标准(SP 800-131A Rev.1)。在 2020 年代,使用 FPGA 或云 GPU 可以在数小时内暴力破解 DES。

3DES:112位有效密钥仍具一定安全性,但远低于现代标准(AES-128 的 128位)。NIST 在 2023 年后逐步弃用 3DES,预计 2024 年后不再批准。主要风险是 Meet-in-the-Middle 攻击:对 3DES-2T 的 MITM 攻击将有效安全强度从 112 位降至约 57 位(取决于攻击场景)。此外,3DES 的 64 位分组大小也使其易受 Sweet32 碰撞攻击(约 32GB 数据即可产生碰撞)。

使用场景

DES/3DES 在现代系统中已被 AES(Advanced Encryption Standard)取代。仍在使用 DES/3DES 的场景包括:

  • 金融行业 — ISO 8583 支付报文、EMV 芯片卡、POS 终端、ATM 交易
  • 遗留系统 — 1990-2000 年代部署的老旧系统,升级成本高
  • 硬件兼容 — IC 卡、SIM 卡、加密硬件尚不支持 AES
  • 教学研究 — 作为分组密码经典范例用于密码学教学

建议:新系统直接使用 AES-256(本站 AES 工具)。必须使用 3DES 时优先使用 3DES-3T 和 CBC 模式,并避免超过 32GB 数据的加密。

技术参数

参数DES3DES-2T3DES-3T
分组大小64 bit (8字节)64 bit (8字节)64 bit (8字节)
密钥长度64 bit (56有效)128 bit (112有效)192 bit (168有效)
轮数1648 (16×3)48 (16×3)
安全强度~56 bit~80 bit (MITM)~112 bit (MITM)
分组排列Feistel 网络EDE 模式EDE 模式