DevKit源码

加密数据调试

AES / SM4 的响应密文解不开,或 HMAC / SM2 的签名校验结果看不清楚:把参数配齐、把结论算清楚—— AES-GCM 错误参数会认证失败;SM4-CBC 错误 IV 可能只损坏开头,需核对明文与下方说明。

本地处理 · 密文与密钥不上传

支持的输入

AES-GCM 密文(Base64 / Hex,密文||认证标签)SM4-CBC / ECB 密文(Hex / Base64)HMAC 报文原文 + 期望 MACSM2 原文 + 签名(raw / DER)+ 公钥

得到的结论与产出(全部可复制)

解密明文(认证 / 去填充通过才算)HMAC「与期望一致 / 不一致」SM2「验签通过 / 不通过」失败原因与缺失参数提示

先把结论的措辞分清

本场景页与工具文案严格区分这三种结果,不混用

解码成功

Base64 / Hex 文本还原成了字节。只说明「拿到了字节」,与密钥对不对没有任何关系——解码成功 ≠ 解密成功。

解密成功

密文真的还原出了明文:AES-GCM 认证标签校验通过、SM4 PKCS#7 去填充校验通过。密钥错一位都到不了这一步。

验签通过

签名与原文、密钥(公钥)完全匹配:HMAC 显示「与期望一致」,SM2 显示「验签通过」。不匹配时给出明确否定结论。

缺失参数

密钥 / IV / 签名为空或格式不符时,工具在计算前就指出缺什么(如「IV(nonce)为空:…」「raw 签名应为 128 位 Hex…」),不会带着空参数开算。

示例数据

先跑一个真实示例(含正反对照)

示例为无敏感信息的造造数据;每条密文 / MAC / 签名与每句工具提示,均于 2026-09-26 用本站工具的同一份执行器 (node 实跑)核对:正样本逐字还原明文或校验通过;反样本依实际算法展示失败或异常明文,SM4-CBC 错 IV 的边界见下方说明。 进入对应工具页照参数复现即可。

AES-GCM 响应解密

响应里的密文字段(Base64,密文||认证标签 拼接,粘进工具的密文输入框)
CY8UHTFfOvmZYqnqLnUECbO0gU7E+7NZgNG6cUg8c8IFuPTIk2EplohEDul6XGLj0ZB7HWisB6b5NNVTj9Hq1OlEJbuoOhorcKjNclNTNk66UIZARFiT4hCmYZY0th1Zjdc3C/3yovY=
密钥(Hex,32 字节 = AES-256)
00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff
IV / nonce(Hex,12 字节)
e0e1e2e3e4e5e6e7e8e9eaeb
AAD
未使用(加密时为空;后端若用了 AAD,解密时必须填完全一致的一段)
其余选项
AES-256 · 认证标签 128 位 · 输入编码 Base64
  1. 第 1 步 · 按原始编码粘入密文

    工具按「输入编码」把文本还原成字节——这一步只做解码:解码成功 ≠ 解密成功,它只说明拿到了字节。串被截断或混入非法字符会在这里报错,先把复制问题排掉。

    Base64 解码成功,得到 104 字节(密文 88 字节 + 认证标签 16 字节)——这只是「拿到了字节」,还没有解密

  2. 第 2 步 · 配齐四个参数:密钥、IV、AAD、标签长度

    GCM 解密四个参数缺一不可,工具在计算前先校验并明确指出缺什么:IV 为空提示「IV(nonce)为空:…」,密钥字节数不符提示「密钥解码后 N 字节,需要 32 字节(AES-256)」,不会带着错参数开算。

    参数校验通过:AES-256 · IV 12 字节 · 认证标签 128 位 · AAD 为空

  3. 第 3 步 · 解密——认证通过才叫「解密成功」

    GCM 是认证加密,认证标签校验内嵌在解密里:密钥、IV、AAD、标签长度任一与加密时不同,都得到「认证失败」,不会输出半截明文,绝不显示假成功。

    AES-GCM 解密成功(88 字节,认证通过)

    第 3 步输出(解密得到的明文,UTF-8 文本,可复制)
    {"code":0,"message":"ok","data":{"orderId":"SO-2026-0926","status":"PAID","amount":199}}
  4. 第 4 步 · 明文再核对

    解密成功只说明密文还原了,不代表业务数据对:把明文粘进「JSON 格式化」确认能解析、字段齐全;要取字段再走 JSONPath。解密成功 ≠ 业务正确,这一步把两件事分开。

正反对照(node 实跑结论,逐字抄录工具提示)
成功
正样本 · 示例数据原样运行AES-GCM 解密成功(88 字节,认证通过)——明文即第 3 步输出,逐字一致
明确失败
反样本 · 密钥末字节 ff 改成 fe认证失败:密钥错误、密文被修改或 AAD 不一致(IV 与认证标签长度也须与加密时相同)
明确失败
反样本 · IV 首字节 e0 改成 e1认证失败(同一句提示)——GCM 的 IV 参与认证,错一位也过不了

用我的数据处理

单项工具适合直接计算或对照:进入工具页,按示例配齐密钥、IV、签名格式后运行。 单项工具的数据只在页面内存中处理,离开即清除。 要串联步骤,可到处理流程的预设库添加 「AES 响应解密」或「HMAC 签名校验」等预设;HMAC 校验预设要求填写期望值,缺失或不一致时流程明确失败。 流程中的密钥会在确认风险后保存到本机浏览器。

常见失败原因

提示文案均为工具真实显示,node 实跑触发后逐字抄录,可直接对照
你会看到的提示出现在原因与下一步
认证失败:密钥错误、密文被修改或 AAD 不一致(IV 与认证标签长度也须与加密时相同)AES 加解密密钥、IV、AAD、认证标签长度任一与加密时不同(node 实测:错一位密钥或 IV 都触发)。GCM 是认证加密,这是真实结论不是工具故障;逐一核对四个参数即可定位。
IV(nonce)为空:加密前请填写或点击「随机 IV」生成AES 加解密缺 IV。GCM 的 IV 参与认证不能省略;抓包里 IV 通常随密文一起下发,也可能藏在响应头或密文前缀里。
密钥解码后 17 字节,需要 32 字节(AES-256)AES 加解密把口令当密钥粘进去了。本工具不做任何密码派生(PBKDF2 / scrypt):密钥必须是 16 / 24 / 32 字节原始字节(AES-256 = 32 字节),长度不符会得到精确的字节数错误。
密文(含认证标签)共 12 字节,不足认证标签长度(16 字节):请确认输入的是「密文||认证标签」拼接格式AES 加解密粘错了字段(比如把 12 字节的 IV 当密文粘了)。输入应为 WebCrypto 输出顺序的「密文||认证标签」拼接,标签固定在末尾。
解密失败:PKCS#7 去填充校验未通过(通常是密钥错误或密文被修改;请核对密钥、IV 与模式)SM4 加解密错误密钥或密文被改的典型信号(node 实测:换一位密钥即触发)。核对密钥(编码别选反)、IV 与模式;密钥正确而密文被改动也会走到这里。
解密密文长度错误:当前 79 字节,不是 16 的整数倍(SM4 密文必为 16 字节的整数倍,请检查输入编码或密文是否完整)SM4 加解密密文被截断 / 复制不完整(node 实测:删 2 个 Hex 字符即触发),或把 Hex 当 Base64 粘(反之亦然)。重新完整复制,并核对输入编码选项。
密钥 UTF-8 编码后 32 字节,需要恰好 16 字节(16 个 ASCII 字符;非 ASCII 字符多字节编码会导致超长)SM4 加解密密钥编码选错:32 个 Hex 字符被按 UTF-8 算成了 32 字节。把「密钥编码」切到 Hex 再试;UTF-8 输入则须恰好 16 个 ASCII 字符。
不报错,但明文开头 16 字节是乱码SM4 加解密(CBC)IV 错了:CBC 的 IV 只影响第一个分组,后面照常解出(node 实测确认,见示例第 4 步)。密钥错通常是整段乱码或触发去填充报错——按乱码范围先分辨是 IV 还是密钥问题。
与期望不一致(红色徽标)HMAC 计算与校验报文或密钥与签名时不一致(多一个空格也不行),或期望值编码口径不同(Hex 与 Base64)。先用示例报文 + 你的密钥重算一遍:重算值与期望一致说明密钥对、报文被改过。
验签不通过:这是一个真实计算出的结论,不是执行错误SM2 加解密与签名原文、签名、公钥、userId、签名格式(raw 与 DER 不通用)任一不匹配(node 实测:改一位签名、改一个字符原文、换 userId 均触发)。逐项排查;DER 签名(30 开头)当 raw 用是最常见错法。
raw 签名应为 128 位 Hex(r||s 各 64 位),当前 N 位SM2 加解密与签名粘的签名不是 raw r||s:可能带 04 前缀、是 DER 编码或被截断。按实际格式切换 raw / DER;DER 签名以 30 开头且长度不定。

如实说明(真实现象,不是故障)

使用前请知悉

SM4-CBC 错误 IV 不报错(结构性现象)

CBC 模式下 IV 只参与第一个分组的解密:IV 错了不会失败,只会让开头 16 字节乱码、其余分组正常(node 实测:本场景示例错 IV 时首字节 { 变 k,后 52 字节与正确明文完全一致)。这是 CBC 的数学性质,任何正确实现都如此。识别方法:只有开头乱码 → 查 IV;整段乱码或去填充报错 → 查密钥。AES-GCM 不存在此问题——IV 参与认证,错一位即「认证失败」。

「验签不通过」时状态栏不是红色

SM2 验签「不通过」是计算结论而非执行错误:结论面板显示红色「验签不通过」并给出可能原因,状态栏因计算成功显示完成、文案注明「这是一个真实计算出的结论,不是执行错误」。HMAC 的「与期望不一致」同理。读结论面板 / 徽标的文案,不要只看状态栏颜色。

数据处理说明

本页只有固定示例,不接收任何输入;你的密文、密钥、签名不经过本页,也不进入 URL 或分享链接。 单项工具页里,密钥与密文只存在于当前页面内存,刷新或离开即清除,不上传、不写 localStorage。 若把含密钥的步骤加进「处理流程」,密钥在你确认风险后仅保存到本机浏览器 localStorage(设置页可清除); 运行记录只存状态与耗时,不含输入输出。详见本地处理与隐私。

解开了,接下来呢

密文解开后是 JSON?格式化核对结构与字段;要核对散列 / 摘要,用 MD5 / SHA 工具。