国密联调最常见的问题,不是「算法完全不可用」,而是双方对输入、密钥格式、密文拼接顺序、编码和模式的理解有一个细节不一致。SM2、SM3、SM4 分别解决不同问题:SM2 负责公钥加密和签名验签,SM3 负责 256 位摘要与 HMAC, SM4 负责 128 位分组对称加密。把它们放在同一个页面里测试,可以更快判断问题出在算法选择、参数配置还是接口拼接。

什么时候需要国密在线联调

当项目涉及政务、金融、信创、等保改造或国产密码体系适配时,研发团队经常需要把前端、后端、网关、设备或第三方系统的加密结果对齐。 这类问题不适合只靠口头描述,因为「密钥是一致的」「签名串一样」往往只是感觉一致。更稳妥的做法,是用国密算法工具 把输入、密钥、模式、输出格式和结果逐项固定下来,再和服务端日志逐字节比对。

  • 接口签名验签:确认原始签名串、SM2 私钥签名、公钥验签和输出编码是否一致;
  • 字段加密解密:确认 SM2 密文顺序、SM4 模式、密钥长度、IV 和填充方式是否匹配;
  • 完整性校验:确认 SM3 摘要或 HMAC-SM3 是否基于同一份原始输入;
  • 协作复现:生成不含私钥和明文的分享链接,让后端、安全或测试同事复现配置现场。
不要把工具当成合规结论
在线工具可以帮助你验证算法输入输出、联调参数和排查思路,但不能替代密码应用安全评估、合规审计或正式架构评审。 涉及生产密钥、证书体系、密钥托管和监管要求时,应由安全、合规或密码应用专业人员确认。

先分清 SM2、SM3、SM4 的角色

很多联调卡住,是因为把三类算法混在一起讨论。SM2 是非对称密码算法,常见操作包括公钥加密、私钥解密、私钥签名和公钥验签。 SM3 是摘要算法,输出 256 位摘要;如果需要带共享密钥的消息认证,应使用 HMAC-SM3,而不是普通 SM3。SM4 是对称分组密码, 固定使用 128 位密钥,CBC 模式还需要 128 位 IV;ECB 不需要 IV,但真实业务里通常要谨慎评估是否适合。

能力常见用途排查重点
SM2 加密解密公钥加密 / 私钥解密公私钥是否成对、密文顺序是否一致
SM2 签名验签私钥签名 / 公钥验签签名串、编码、用户 ID 和摘要前置处理
SM3 摘要256 位哈希原文、换行、JSON 顺序和字符编码
HMAC-SM3带密钥的消息认证共享密钥、签名串拼接和大小写格式
SM4 加解密128 位对称加密模式、密钥、IV、填充和 Hex/Base64 输出
先确认你在验证什么
如果你要验证「内容有没有被篡改」,通常看 SM3 或 HMAC-SM3;如果要验证「是谁签的」,看 SM2 签名验签; 如果要保护字段明文,才进入 SM2 或 SM4 加密解密链路。目标不同,排查顺序也不同。

一次可复现的国密联调流程

  1. 1
    先保存最小脱敏样例
    把手机号、证件号、订单号、token、真实密钥和生产证书替换成测试值,只保留能复现问题的字段。联调材料越小,越容易判断是哪一个字符导致结果不同。
  2. 2
    固定输入字节,而不是只看显示文本
    同一段文本如果末尾多一个换行、空格或不可见字符,SM3 摘要和签名结果都会变化。建议把原始签名串单独打印出来,再粘贴到工具中测试。
  3. 3
    确认密钥和输出格式
    SM4 常用 32 位十六进制字符串表示 16 字节密钥;接口字段可能使用 Hex、Base64 或 PEM 包装。必要时先用 Base64 编码解码 检查表达形式。
  4. 4
    按算法分别验证
    不要一次把签名、摘要、加密、网关转发全部混在一起排查。先让 SM3 摘要对齐,再验签;先让 SM4 本地加解密对齐,再接入接口传输。
  5. 5
    生成脱敏分享链接
    工具分享链接可以恢复算法、模式、公钥、SM3 输入和可分享结果,但不会写入 SM2 私钥、SM4 密钥、HMAC 密钥或解密明文。分享前仍要确认输入本身没有敏感信息。
  6. 6
    复杂场景再让 Pro AI 整理排查清单
    当你已经确认基础输入输出,但不知道下一步该查密钥管理、模式选择还是部署边界时,可以在 Pro 区域生成 AI 国密分析,再由安全或后端负责人复核。

SM2:加密解密和签名验签要分开看

SM2 的两个常见用途是加密解密和签名验签,它们经常使用同一套公私钥,但目标完全不同。加密链路里,发送方用公钥加密,接收方用私钥解密; 签名链路里,发送方用私钥签名,接收方用公钥验签。联调时如果把「私钥能不能解密」和「公钥能不能验签」混成一个问题,就很难定位。

密文顺序:C1C3C2 和 C1C2C3 要一致

SM2 密文常见拼接顺序包括 C1C3C2 和 C1C2C3。新实现通常优先使用 C1C3C2,但旧系统、设备 SDK 或历史接口可能仍使用 C1C2C3。 如果前端加密后后端无法解密,先不要急着换密钥,应先确认双方使用的密文顺序、输出格式和是否带有前缀。

签名验签:最重要的是原始签名串

验签失败时,密钥未必是第一嫌疑。更常见的是签名串拼接顺序不同、字段大小写不同、URL 编码不同、JSON 序列化顺序不同,或者末尾多了换行。 建议把参与签名的原始字符串作为排查对象,而不是只对比最后的签名值。

实操案例

接口验签一直失败

前端用 SM2 私钥签名,后端用公钥验签失败。双方都确认密钥来自同一个测试证书,但接口仍返回签名错误。
  1. 1.把参与签名的字段缩小到 3 个以内,先在本地打印原始签名串,不要直接复制格式化后的 JSON。
  2. 2.国密算法工具 中选择 SM2 签名,粘贴测试私钥和原始签名串,生成签名。
  3. 3.用同一页面切换到验签,粘贴测试公钥、原始签名串和签名值,确认工具内能否通过。
  4. 4.如果工具内通过、接口失败,继续比对服务端收到的原始字符串、字符编码、URL 解码次数和签名字段大小写。
得到什么:问题从「SM2 失败」缩小为「接口传输后的签名串是否变化」,后端可以沿请求日志逐段定位,而不是反复更换密钥。

SM3 和 SM4:最容易被忽略的是输入边界

SM3 摘要结果只要输入字节不同,就会完全不同。联调中常见误差包括:复制时多了换行、JSON 字段顺序改变、中文编码不一致、时间戳参与签名、 HMAC 密钥来源不同。SM4 则更依赖参数一致性:ECB 和 CBC 不能混用,CBC 的 IV 必须一致,密钥必须是 16 字节,输出端还要约定 Hex 或 Base64。

  • 普通 SM3 用于摘要,HMAC-SM3 用于带共享密钥的消息认证,不要混用;
  • SM4 的 128 位密钥通常用 32 位十六进制字符串输入,CBC 模式还要提供 16 字节 IV;
  • 如果密文看起来一样但接口解析失败,检查 Hex/Base64、大小写、换行和字段转义;
  • 如果同样 JSON 算出的摘要不同,先固定序列化方式和字段顺序,再排查算法。
用对照工具降低误判
遇到 Base64、JWT、AES 或其他编码格式混在一起的接口,可以配合Base64 编码解码JWT 解析工具AES 加解密工具 分段确认。先把编码层排除,再讨论国密算法层。

免费测试和 Pro AI 分析怎么配合

免费能力适合完成绝大多数基础验证:SM2 加密解密、SM2 签名验签、SM3 摘要、HMAC-SM3、SM4 ECB/CBC、本地历史和分享恢复。 Pro AI 分析更适合在「参数都试过,但仍不知道下一步该查什么」时使用。它不会接收私钥、SM4 密钥、HMAC 密钥或解密明文,而是基于当前算法、模式和脱敏摘要生成建议。

能力免费版Pro
SM2 加解密和签名验签支持支持
SM3 摘要与 HMAC-SM3支持支持
SM4 ECB/CBC 加解密支持支持
本地会话历史最近操作最近操作
分享链接恢复非敏感配置和结果非敏感配置和结果
AI 国密分析生成选型、密钥管理和排查建议

升级 Pro,把国密联调现场整理成排查清单

PRO

根据当前 SM2、SM3、SM4 场景的脱敏摘要,生成算法选型、密钥管理、部署风险和下一步联调动作,适合安全、后端和测试协作。

  • 生成 2-4 条算法选型与联调动作
  • 输出 1 份可复制的诊断摘要
  • 整理密钥、IV、签名串和编码 4 类排查点
  • 辅助后端、安全和测试同事复核

分享和留档要注意什么

国密联调材料通常包含比普通接口调试更敏感的内容。分享链接和截图都应遵循最小必要原则:只保留算法、模式、公开配置、脱敏输入和可公开结果。 私钥、对称密钥、HMAC 密钥、生产证书、客户明文和解密后的业务数据不应放入链接、聊天记录或工单附件。

  • 分享前确认输入是否已经脱敏,尤其是 SM3 输入和原始签名串;
  • 不要把生产私钥粘贴到任何协作材料中,测试也应使用临时密钥;
  • 记录问题时优先写「算法、模式、输入摘要、错误现象、对照结果」,而不是粘贴完整秘密;
  • AI 分析结果应作为排查草稿,涉及合规、架构和密钥托管的结论必须人工确认。

联调前检查清单

  • 是否明确本次验证的是加密、解密、摘要、签名还是验签;
  • 是否使用测试密钥和脱敏输入,没有粘贴生产私钥或客户明文;
  • SM2 密文顺序、签名输出和公私钥来源是否双方一致;
  • SM3 或 HMAC-SM3 的原始输入是否逐字符一致;
  • SM4 的模式、密钥、IV、填充和输出格式是否逐项一致;
  • 分享链接、工单和截图是否只包含可分享信息。

常见问题

SM2、SM3、SM4 可以互相替代吗?

不建议这样理解。SM2 是非对称算法,适合加密密钥、签名和验签;SM3 是摘要算法,适合完整性校验;SM4 是对称分组密码,适合加密业务字段或传输内容。它们通常组合使用,而不是互相替代。

SM2 加密成功但后端解不开,先查什么?

先查公私钥是否成对、密文顺序是 C1C3C2 还是 C1C2C3、输出是 Hex 还是 Base64、是否带前缀,以及接口传输时有没有转义或截断。不要一上来就判断算法实现错误。

SM3 哈希和后端不一致怎么办?

把参与哈希的原始输入打印出来逐字符比较。常见差异包括末尾换行、空格、JSON 字段顺序、中文编码、时间戳、签名串拼接顺序和 HMAC 密钥。只要输入字节不同,摘要就会不同。

SM4 的密钥和 IV 应该是多少?

SM4 使用 128 位密钥,也就是 16 字节;工具里通常用 32 位十六进制字符串输入。CBC 模式还需要 16 字节 IV,ECB 不需要 IV。真实业务中应结合安全方案评估模式、填充和密钥管理。

分享链接会泄露私钥或明文吗?

工具的分享链接用于恢复算法、模式、公钥、SM3 输入和可分享结果,不会写入 SM2 私钥、SM4 密钥、HMAC 密钥或解密明文。但如果你把敏感内容放进 SM3 输入或结果说明里,仍需要先脱敏再分享。

Pro AI 国密分析能直接给合规结论吗?

不能。它适合整理算法选型、密钥管理、部署风险和下一步联调动作,帮助团队排查问题。涉及密码应用安全评估、监管要求、证书体系和生产密钥托管的结论,必须由专业人员按实际环境确认。

从一个最小样例开始

如果你正在处理国密接口联调,先不要把完整业务请求全部搬进工具。复制一个最小脱敏样例,打开国密算法工具,按 SM2、SM3、SM4 的角色分段验证。 遇到编码或令牌字段时,可回到 在线工具集首页 查找Base64 编码解码JWT 解析工具 辅助排查;如果你还在梳理接口错误,可继续阅读JSON 格式错误排查指南