Triple DES(3DES)加密
用 Triple DES(DES-EDE3)加密文本,可使用 OpenSSL des-ede3-cbc 格式的口令,或 16/24 字节的十六进制密钥和 IV,支持 CBC、CFB、OFB 和 ECB。
输出为 Base64 编码的 OpenSSL “Salted__” 格式:8 字节随机盐后接密文。密钥和 IV 由口令和盐派生,因此同一段文本每次加密结果都不同。等效命令:
openssl enc -des-ede3-cbc -md md5 -a -A -k '…'完全在浏览器中运行,您的数据不会被上传。
什么是 Triple DES 加密?
使用 Triple DES 加密数据,它用两个或三个独立密钥把 DES 应用三次(加密–解密–加密)。它仍然存在于支付系统、旧版 VPN 和企业软件中,因此这个工具可以帮你生成兼容的数据。
如何使用 Triple DES 加密
- 保持密钥来源为口令(兼容 OpenSSL)并输入口令,或切换到原始密钥 + IV(十六进制)并以十六进制输入准确的密钥和 IV。
- 选择模式和填充(带 PKCS#7 的 CBC 是 OpenSSL 的默认值)。
- 输入或粘贴明文(处理二进制数据时,可把输入编码切换为 Hex)。
- 点击加密,选择 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 撤销。请仅将其视为遗留算法。