Triple DES(3DES)解密
用口令解密来自 OpenSSL 或 CryptoJS 的 Triple DES(DES-EDE3)数据,或用 16/24 字节十六进制密钥和 IV 解密原始密文。在浏览器本地运行。
输出为 Base64 编码的 OpenSSL “Salted__” 格式:8 字节随机盐后接密文。密钥和 IV 由口令和盐派生,因此同一段文本每次加密结果都不同。等效命令:
openssl enc -des-ede3-cbc -d -md md5 -a -A -k '…'完全在浏览器中运行,您的数据不会被上传。
什么是 Triple DES 解密?
解密 3DES 密文,既可以是 OpenSSL Salted__ Base64 格式(来自 openssl enc -des-ede3-cbc 或 CryptoJS.TripleDES.encrypt),也可以是配合十六进制密钥和 IV 的原始字节。密钥错误会通过 PKCS#7 填充检查被发现。
如何使用 Triple DES 解密
- 选择与加密时相同的密钥来源:对于
U2FsdGVkX1…("Salted__")数据选择口令(兼容 OpenSSL),对于原始密文选择原始密钥 + IV(十六进制)。 - 输入口令(以及相同的密钥派生方式),或输入十六进制密钥和 IV。
- 设置与发送方相同的模式和填充,并粘贴密文(Base64 或 Hex)。
- 点击解密。输出保持为文本 (UTF-8),如果明文是二进制,则切换为 Hex。
示例
U2FsdGVkX1+fAUPBci9K1t4/ytC3mL9Lj5o+GNDlCXc= (passphrase "secret", CBC)
Hello, World!
由 openssl enc -des-ede3-cbc -md md5 -a -k secret 生成。
何时使用 Triple DES 解密
用于读取遗留系统的数据、验证合作方的测试向量或调试集成。之后建议考虑把数据迁移到 AES。
Triple DES 解密 的工作原理
Salted__ 输入:读取盐,由口令重新派生 24 字节密钥和 8 字节 IV(EVP_BytesToKey MD5 或 PBKDF2-SHA256),并以所选模式用 D(K1, E(K2, D(K3, block))) 解密数据。原始输入则直接使用你的密钥(16 或 24 字节)和 IV。显示文本之前,会先验证最后一个分组的填充。
常见用例
- 解密遗留数据库导出中的 3DES 值
- 查看 CryptoJS.TripleDES 密文的内容
- 验证支付系统的 3DES 测试向量
- 判断数据是 3DES 还是单重 DES
安全提示
Triple DES 已被弃用:NIST 自 2023 年后不再允许其用于加密,其 64 位分组使长会话易受 Sweet32 生日攻击。仅用于兼容。
常见问题
解密失败——应该检查什么?
检查口令、密钥派生方式(MD5 还是 PBKDF2)、模式,以及对于原始密钥,密钥是 16 还是 24 字节、IV 是否正确。有些系统使用不带 IV 的 ECB。
它能读取用默认设置生成的 OpenSSL 输出吗?
OpenSSL 1.1+ 在不带 -md md5 时会用 SHA-256 派生密钥(没有 PBKDF2),这里不支持。加密时请使用 -md md5 或 -pbkdf2。
它适用于 HSM 中的密钥吗?
如果你知道原始密钥字节,可以:选择原始密钥 + IV(十六进制)并输入它们。保存在 HSM 内部的密钥无法导出到浏览器。