解码成功
Base64 / Hex 文本还原成了字节。只说明「拿到了字节」,与密钥对不对没有任何关系——解码成功 ≠ 解密成功。
AES / SM4 的响应密文解不开,或 HMAC / SM2 的签名校验结果看不清楚:把参数配齐、把结论算清楚—— AES-GCM 错误参数会认证失败;SM4-CBC 错误 IV 可能只损坏开头,需核对明文与下方说明。
Base64 / Hex 文本还原成了字节。只说明「拿到了字节」,与密钥对不对没有任何关系——解码成功 ≠ 解密成功。
密文真的还原出了明文:AES-GCM 认证标签校验通过、SM4 PKCS#7 去填充校验通过。密钥错一位都到不了这一步。
签名与原文、密钥(公钥)完全匹配:HMAC 显示「与期望一致」,SM2 显示「验签通过」。不匹配时给出明确否定结论。
密钥 / IV / 签名为空或格式不符时,工具在计算前就指出缺什么(如「IV(nonce)为空:…」「raw 签名应为 128 位 Hex…」),不会带着空参数开算。
示例为无敏感信息的造造数据;每条密文 / MAC / 签名与每句工具提示,均于 2026-09-26 用本站工具的同一份执行器 (node 实跑)核对:正样本逐字还原明文或校验通过;反样本依实际算法展示失败或异常明文,SM4-CBC 错 IV 的边界见下方说明。 进入对应工具页照参数复现即可。
CY8UHTFfOvmZYqnqLnUECbO0gU7E+7NZgNG6cUg8c8IFuPTIk2EplohEDul6XGLj0ZB7HWisB6b5NNVTj9Hq1OlEJbuoOhorcKjNclNTNk66UIZARFiT4hCmYZY0th1Zjdc3C/3yovY=
工具按「输入编码」把文本还原成字节——这一步只做解码:解码成功 ≠ 解密成功,它只说明拿到了字节。串被截断或混入非法字符会在这里报错,先把复制问题排掉。
Base64 解码成功,得到 104 字节(密文 88 字节 + 认证标签 16 字节)——这只是「拿到了字节」,还没有解密
GCM 解密四个参数缺一不可,工具在计算前先校验并明确指出缺什么:IV 为空提示「IV(nonce)为空:…」,密钥字节数不符提示「密钥解码后 N 字节,需要 32 字节(AES-256)」,不会带着错参数开算。
参数校验通过:AES-256 · IV 12 字节 · 认证标签 128 位 · AAD 为空
GCM 是认证加密,认证标签校验内嵌在解密里:密钥、IV、AAD、标签长度任一与加密时不同,都得到「认证失败」,不会输出半截明文,绝不显示假成功。
AES-GCM 解密成功(88 字节,认证通过)
{"code":0,"message":"ok","data":{"orderId":"SO-2026-0926","status":"PAID","amount":199}}解密成功只说明密文还原了,不代表业务数据对:把明文粘进「JSON 格式化」确认能解析、字段齐全;要取字段再走 JSONPath。解密成功 ≠ 业务正确,这一步把两件事分开。
单项工具适合直接计算或对照:进入工具页,按示例配齐密钥、IV、签名格式后运行。 单项工具的数据只在页面内存中处理,离开即清除。 要串联步骤,可到处理流程的预设库添加 「AES 响应解密」或「HMAC 签名校验」等预设;HMAC 校验预设要求填写期望值,缺失或不一致时流程明确失败。 流程中的密钥会在确认风险后保存到本机浏览器。
| 你会看到的提示 | 出现在 | 原因与下一步 |
|---|---|---|
| 认证失败:密钥错误、密文被修改或 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 开头且长度不定。 |
CBC 模式下 IV 只参与第一个分组的解密:IV 错了不会失败,只会让开头 16 字节乱码、其余分组正常(node 实测:本场景示例错 IV 时首字节 { 变 k,后 52 字节与正确明文完全一致)。这是 CBC 的数学性质,任何正确实现都如此。识别方法:只有开头乱码 → 查 IV;整段乱码或去填充报错 → 查密钥。AES-GCM 不存在此问题——IV 参与认证,错一位即「认证失败」。
SM2 验签「不通过」是计算结论而非执行错误:结论面板显示红色「验签不通过」并给出可能原因,状态栏因计算成功显示完成、文案注明「这是一个真实计算出的结论,不是执行错误」。HMAC 的「与期望不一致」同理。读结论面板 / 徽标的文案,不要只看状态栏颜色。
本页只有固定示例,不接收任何输入;你的密文、密钥、签名不经过本页,也不进入 URL 或分享链接。 单项工具页里,密钥与密文只存在于当前页面内存,刷新或离开即清除,不上传、不写 localStorage。 若把含密钥的步骤加进「处理流程」,密钥在你确认风险后仅保存到本机浏览器 localStorage(设置页可清除); 运行记录只存状态与耗时,不含输入输出。详见本地处理与隐私。
密文解开后是 JSON?格式化核对结构与字段;要核对散列 / 摘要,用 MD5 / SHA 工具。