ToolAct工具行动

DES 加密解密工具

支持 DES 和 Triple DES(3DES),五种加密模式可选

加密配置

输入内容
字符数: 0
字节数: 0
转换结果
字符数: 0
字节数: 0

什么是 DES?

DES(Data Encryption Standard,数据加密标准)诞生于 1977 年,由 IBM 研发并经美国国家安全局修改后成为联邦标准。它采用 Feistel 网络结构,将 64 位明文分成左右两半,经过 16 轮迭代运算生成密文。DES 的密钥名义上是 64 位,但其中 8 位用作奇偶校验,实际有效密钥长度只有 56 位。56 位密钥在当年算得上安全,但随着计算能力的飞速提升,1999 年就已经能在 22 小时内被暴力破解。为了延续 DES 的生命力,Triple DES(3DES)应运而生——它用三组不同的密钥对数据执行三次 DES 加密,有效密钥长度达到 168 位,安全性大幅提升。3DES 被广泛用于金融支付领域,至今仍是 EMV 芯片卡和部分银行系统的底层加密方案。虽然 AES 已经取代 DES 成为新的加密标准,但在很多遗留系统、金融协议和嵌入式设备中,DES 和 3DES 仍然在发挥作用。本工具支持 DES 和 3DES 两种算法,配合 CBC、ECB、CFB、OFB、CTR 五种模式,方便你在兼容旧系统或学习密码学时使用。

使用方法

使用步骤

  1. 选择算法:DES(56 位密钥)或 3DES(168 位密钥)
  2. 选择加密模式,推荐 CBC
  3. 选择填充方案,大多数情况下使用 PKCS#7
  4. 输入密钥或点击「生成随机密钥」
  5. 对需要 IV 的模式,请输入或生成一个
  6. 在左侧输入明文(用于加密)或密文(用于解密)
  7. 结果自动显示在右侧

加密模式

  • CBC密码块链接模式。加密前,先将每个明文块与前一个密文块进行异或运算。需要初始化向量(IV),安全性良好,是最常用的模式。
  • ECB电子密码本模式。每个块独立加密——相同的明文块会生成相同的密文。适用于单个 8 字节数据块,不建议用于较长数据。
  • CFB密码反馈模式。将分组密码转换为流密码,适合按字节或小块数据处理。
  • OFB输出反馈模式。与 CFB 类似,但错误不会传播,适用于通信信道存在噪声的场景。
  • CTR计数器模式。通过递增计数器生成密钥流,支持并行加密和解密,性能优秀。

提示

  • 如果可以,请优先使用 AES——DES 主要用于向后兼容
  • 3DES 比 DES 安全得多,但速度约为其三分之一
  • 每次加密务必使用不同的随机 IV
  • 避免使用 ECB 模式加密超过 8 字节的数据
  • 建议生成随机密钥,不要手动输入便于记忆的字符串

使用场景

复现旧版 DES 或 TripleDES 对接逻辑在维护支付、通信、设备控制或企业级旧协议时,选用 DES(8 字节密钥)或 TripleDES(24 字节密钥),并匹配 ECB、CBC、CFB、OFB 或 CTR 模式。整个 Feistel 网络实现通过 crypto-js 在浏览器中运行,56 位(DES)或 168 位(3DES)密钥和明文不会离开当前标签页,适合在不通过远程工具发送真实业务数据的情况下复现供应商示例。
精确对齐密钥、IV 和密文格式以 Hex、Base64 或文本格式输入密钥和 IV,需要时生成随机素材,在与另一个系统对比输出前先验证非 ECB 模式所需的 8 字节 IV。页面能帮你快速确认不匹配的原因是密钥长度错误(DES 需要 8 字节,3DES 需要 24 字节)、IV 缺失或过期,还是最后一个分组的 PKCS#7 填充边界问题。
记录旧密码算法应当隔离使用的原因将工具用于兼容性测试和迁移文档,而非新的安全设计。DES 已经过时(1999 年专用机器 22 小时即可暴力破解,现在的 GPU 集群更快),TripleDES 也属于遗留算法。现代系统应优先使用 AES-GCM 等认证加密方案,DES 示例应明确标注,避免被直接复制到新的安全项目中。
通过往返加解密验证与供应商示例的一致性在对接支付终端、SIM 工具或旧版 API 时,用对方公开的密钥和 IV 加密已知明文,再解密后逐字节比对输出。利用字节长度计数器确认输出是否符合供应商期望的 8 字节分组边界,因为填充被截断或 Base64 字段前后多了空格是常见的静默失败原因。
在 Hex、Base64 和文本之间切换以匹配传输格式根据接收密文的字段选择对应的编码方式,因为只接受 Base64 的下游服务会拒绝原始 Hex,即使底层 DES 输出完全相同。同一个密钥以 Hex('0123456789abcdef')和 Base64('ASNFZ4mrze8=')表示时解密结果一致,这在排查合作方反馈的「格式错误」时很有用。

技术原理

DES 是一种 Feistel 分组密码,1977 年作为 FIPS 46 发布。它以 64 位为分组长度、64 位为密钥进行运算,其中 8 位为奇偶校验位,实际有效密钥材料为 56 位。加密过程从初始置换(IP)开始,将 64 位状态分为两个 32 位的半区 L0 和 R0,然后执行 16 轮 Feistel 迭代,形式为 (L_{i+1}, R_{i+1}) = (R_i, L_i XOR F(R_i, K_i))。轮函数 F 通过 E 盒将 32 位扩展为 48 位,与由 PC-1/PC-2 密钥调度派生的 48 位轮密钥 K_i 进行异或,再经过 8 个 6 转 4 位的 S 盒(S1..S8),最后执行 P 盒置换。最终置换(FP = IP^-1)生成密文。 三重 DES 定义于 NIST SP 800-67,以加密-解密-加密(EDE)结构对 DES 进行三次运算:C = E_{K3}(D_{K2}(E_{K1}(P)))。密钥选项 1 使用三个独立的 56 位密钥(168 位原始密钥,抵御中间相遇攻击约 112 位有效安全性);密钥选项 2 设定 K1 = K3(约 80 位有效安全性)。分组密码模式将 DES/3DES 封装以处理超过 64 位的消息:ECB 独立加密每个分组,会泄露明文模式;CBC 通过 C_i = E_K(P_i XOR C_{i-1}) 进行链式加密,需使用随机 8 字节 IV;CFB 和 OFB 将分组密码转换为自同步或同步流密码;CTR 将明文与 E_K(nonce || counter) 进行异或。 DES 的 56 位密钥空间(2^56 ≈ 7.2 × 10^16)可被穷举:EFF DES Cracker 于 1998 年使用定制 ASIC 在 22 小时内破解了 DES 挑战,现代 GPU/FPGA 集群只需数小时即可完成。NIST SP 800-131A 于 2005 年淘汰了单 DES,并在 2023 年后禁止将三重 DES 用于加密;Sweet32 生日攻击(CVE-2016-2183)进一步削弱了 TLS 中的 3DES,因为其 64 位分组长度在单密钥下约 2^32 个分组(约 32 GB)后就会产生碰撞。现代系统应使用 AES-128 或 AES-256 搭配 GCM 或 ChaCha20-Poly1305 等认证加密模式。

  • DES 密钥为 8 字节含校验位(56 位有效);3DES 密钥为 16 字节(双密钥,约 80 位安全性)或 24 字节(三密钥,抵御中间相遇攻击约 112 位安全性)。
  • 分组长度为 64 位 / 8 字节;CBC、CFB、OFB 和 CTR 均需 8 字节 IV/nonce,ECB 不使用 IV(且在分组级别泄露模式)。
  • PKCS#7 填充追加 N 个值为 N 的字节(1 ≤ N ≤ 8);当明文长度已是 8 的倍数时,会额外添加一个完整的 8 字节 0x08 块。
  • 弱密钥 0x0101010101010101、0xFEFEFEFEFEFEFEFE 以及四组半弱密钥对会使密钥调度中的 K1 = K2,导致 E_K = D_K——生成随机密钥时应避免使用。
  • Sweet32(CVE-2016-2183)利用 3DES 的 64 位分组长度:单密钥下约 2^32 个分组(CBC 模式下单密钥约 32 GB 明文)后会产生碰撞。
  • NIST SP 800-67 Rev. 2 于 2023 年 12 月 31 日后禁止将三重 DES 用于加密;新设计应使用 AES-GCM 或 ChaCha20-Poly1305,而非 DES 或 3DES。
  • EFF DES Cracker(Deep Crack)于 1998 年 7 月以不到 25 万美元的成本在 22 小时内破解了 DES;现代 GPU 集群只需数小时,因此单 DES 不能作为保密控制手段。

示例

DES-CBC 加密

明文:Hello World
密钥(hex):0123456789abcdef
IV(hex):fedcba9876543210
模式:CBC / PKCS#7
输出:Base64 编码的密文

3DES 加密

算法:Triple DES
密钥(hex):24 字节(48 位 hex 字符)
模式:CBC / PKCS#7
说明:168 位密钥目前仍可视为安全,但新项目建议优先选用 AES

ECB 单块加密

明文:8 字节(正好一个 DES 块)
密钥:  0123456789abcdef
模式:  ECB / PKCS#7
说明:  ECB 仅在加密单个 8 字节块时安全,长数据切勿使用

常见问题

DES 现在还安全吗?

不安全。普通 DES 的有效密钥仅 56 位,1998 年已被公开破解——专用硬件可在一天内暴力破解,现代云 GPU 几分钟即可完成。NIST 已于 2005 年正式废止 DES。新系统请改用 AES。

三重 DES(3DES)呢?

3DES 用两到三把密钥执行三次 DES,有效安全强度约 112 位。NIST 在 2017 年弃用 3DES,并自 2023 年起禁止用于新应用,原因是其 64 位分组导致的生日攻击(Sweet32)。它仅在遗留系统(老式银行系统、POS 网络)中残留——可迁移即迁移。

那为什么页面里还保留 DES?

因为现实中仍有遗留系统使用它。当你必须与旧式银行报文格式、嵌入式固件或考试题对接时,本工具仍有用处。这并不表示推荐使用——新代码请用 AES。

DES 有哪些工作模式?分别什么含义?

ECB 对每个分组独立加密,会泄漏明文规律。CBC 通过链式异或并需要 IV。CFB 与 OFB 把 DES 变为流密码。CTR 使用计数器作为 nonce。DES 场景下若以互通为目的,建议使用 CBC + PKCS#7 填充;切勿对真实数据使用 ECB。

DES 的分组与密钥长度是多少?

DES 分组长度 64 位,密钥长度 64 位,其中只有 56 位是有效密钥(另外 8 位为奇偶校验)。三密钥 3DES 的分组依然是 64 位——这正是数据量大时容易遭受 Sweet32 的原因。

计算是在我的浏览器里完成的吗?

是的。DES 通过 JavaScript 在本地运算,密钥和明文都不会离开设备。可在加解密时打开 Network 面板自行确认。

为什么我的 3DES 输出和对端系统对不上?

常见原因:密钥奇偶校验位错误、密钥字节顺序不同、模式不匹配(ECB vs CBC)、缺失或多余的 IV、填充方式不一致(PKCS#7 vs ZeroPadding),以及一边按 UTF-8 编码而另一边按 UTF-16 编码。建议先用一个已知测试向量与对端核对,再去排查真实数据。