Triple DES(3DES)解密

用口令解密来自 OpenSSL 或 CryptoJS 的 Triple DES(DES-EDE3)数据,或用 16/24 字节十六进制密钥和 IV 解密原始密文。在浏览器本地运行。

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

输出为 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 解密

  1. 选择与加密时相同的密钥来源:对于 U2FsdGVkX1…("Salted__")数据选择口令(兼容 OpenSSL),对于原始密文选择原始密钥 + IV(十六进制)。
  2. 输入口令(以及相同的密钥派生方式),或输入十六进制密钥和 IV。
  3. 设置与发送方相同的模式和填充,并粘贴密文(Base64 或 Hex)。
  4. 点击解密。输出保持为文本 (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 内部的密钥无法导出到浏览器。

探索更多分类