Triple DES(3DES)加密

用 Triple DES(DES-EDE3)加密文本,可使用 OpenSSL des-ede3-cbc 格式的口令,或 16/24 字节的十六进制密钥和 IV,支持 CBC、CFB、OFB 和 ECB。

3DES 已被弃用(NIST 自 2023 年后不再允许其用于加密),64 位分组易受 Sweet32 攻击。仅用于兼容旧系统,新数据请使用 AES。

输出为 Base64 编码的 OpenSSL “Salted__” 格式:8 字节随机盐后接密文。密钥和 IV 由口令和盐派生,因此同一段文本每次加密结果都不同。等效命令:

openssl enc -des-ede3-cbc -md md5 -a -A -k '…'

完全在浏览器中运行,您的数据不会被上传。

什么是 Triple DES 加密?

使用 Triple DES 加密数据,它用两个或三个独立密钥把 DES 应用三次(加密–解密–加密)。它仍然存在于支付系统、旧版 VPN 和企业软件中,因此这个工具可以帮你生成兼容的数据。

如何使用 Triple DES 加密

  1. 保持密钥来源为口令(兼容 OpenSSL)并输入口令,或切换到原始密钥 + IV(十六进制)并以十六进制输入准确的密钥和 IV。
  2. 选择模式和填充(带 PKCS#7 的 CBC 是 OpenSSL 的默认值)。
  3. 输入或粘贴明文(处理二进制数据时,可把输入编码切换为 Hex)。
  4. 点击加密,选择 Base64 或 Hex 作为输出编码,然后复制密文。

示例

输入
Raw key 0123456789abcdeffedcba987654321089abcdef01234567, IV 1234567890abcdef, CBC, PKCS#7, plaintext "Triple DES test message"
输出
w46mmLXKZ7SF3YdvRaW9PUPLk/6OeJll

输出为 Base64;与 OpenSSL/Node 的 des-ede3-cbc 结果一致。

何时使用 Triple DES 加密

当合作方系统或标准仍然强制要求 3DES(某些 EMV/支付 HSM 流程、遗留 SOAP 服务)时使用,或用来创建测试向量。新设计请使用 AES-GCM。

Triple DES 加密 的工作原理

3DES 把每个 8 字节分组加密为 E(K3, D(K2, E(K1, block)))。24 字节的密钥提供三个独立密钥(密钥选项 1);16 字节的密钥使用 K3 = K1(双密钥 3DES)。口令模式会派生 24 字节密钥和 8 字节 IV,并写出 OpenSSL Salted__ 格式,与 openssl enc -des-ede3-cbc 和 CryptoJS.TripleDES.encrypt 兼容。原始模式直接使用你的十六进制密钥和 IV;CBC/ECB 使用 PKCS#7 填充。

常见用例

  • 为只接受 3DES-CBC 的遗留系统生成数据
  • 复现 CryptoJS.TripleDES.encrypt(text, passphrase) 的输出
  • 创建双密钥或三密钥 3DES 测试向量
  • 把你的实现与 OpenSSL 的 des-ede3-cbc 进行对比

安全提示

Triple DES 已被弃用:NIST 自 2023 年后不再允许其用于加密,其 64 位分组使长会话易受 Sweet32 生日攻击。仅用于兼容。

常见问题

16 字节还是 24 字节密钥?

24 字节提供三个独立的 DES 密钥(有效安全强度约 112 位)。16 字节密钥是双密钥 3DES,第三个密钥等于第一个(约 80 位)。

输出与 OpenSSL 兼容吗?

兼容。在口令模式下,结果与 openssl enc -des-ede3-cbc -md md5 -a -A -k <passphrase> 生成的完全一致(使用 MD5 的 EVP_BytesToKey);选择 PBKDF2-HMAC-SHA256 时则对应 -pbkdf2 -iter N。加上 -d 即可解密。页面会在口令输入框下方显示对应的命令。

Triple DES 还安全吗?

它并没有被彻底攻破,但速度慢,分组只有 64 位(Sweet32 攻击),并且已被 NIST 撤销。请仅将其视为遗留算法。

探索更多分类