SM2 加解密与签名
国密 SM2 加解密与签名验签,公私钥与密文格式可选。
04 开头非压缩 130 位,或 02/03 开头压缩 66 位(Hex),且必须位于 SM2 曲线上
字符 0字节 0行 0
加密结果
填写公钥后点击「加密」。密文 = C1(64 字节,不含 04 前缀)|| C3(32 字节 SM3 摘要)|| C2(与明文等长), 顺序由「密文顺序」决定。
示例密钥对(本地生成,仅用于测试)
- 公钥(04 非压缩 130 位):
04153365094222d65b0733da2de3515b7a45c58eaacf7f8a77da497ec2a5edf7c2d4cb0636be80c3b18b32229044734b0b8d5a50be7eba40b450f60d3b667e5aed - 私钥(64 位):
2ee6ca8da15004e8a98324f0dc8abf2be01b2d9ff9236fcf25301fc641ae5371
加解密示例(C1C3C2 / Hex)
- 明文:
你好,DevKit!SM2 国密非对称加密。 - 密文(node 真实计算,已验证可解密回原文):
709ae8c0ea961093b7f31f7a4b7675733baa95ebb1b9bdc3ad8b9a5fc630f3c8…(点击「解密示例」载入完整密文)
SM2 加密每次使用新的随机数 k,同一明文重复加密会得到不同密文(均可用同一私钥解密),因此「加密示例」现场计算的结果 与上方 node 密文不同是正常且正确的。 密文 Hex 不含 04 前缀:C1 直接以 x 坐标开头(前 128 位),C3 为 64 位 SM3 摘要,C2 与明文字节等长。
签名示例(raw r||s / DER,userId = 1234567812345678)
- 原文:
DevKit SM2 签名验签示例文本 - raw 签名(已验证验签通过):
c6638f4749d35e688af204c50499bc105db2b404912972e02a3091eae63246be97ba81878c328c525befe1a6aaea137bc5fb8be60533b5a47581e21f6d7fe766 - DER 签名(已验证验签通过):
304502200da4e0319a1d962ac318e004ab21d0004b3b47a215986b80042b57c40f3f8e7e022100f8a49d13cf175c14386fab79ce01763b140ea2efd168821c8a50dd9f20dc59aa
签名包含随机数 k,同一原文重复签名结果不同;「签名示例」现场计算,可与上方向量互相验证格式与流程。
什么时候用「SM2 加解密与签名」
对接国密改造的系统,需要生成或校验 SM2 的加密结果与签名。
使用要点
- 支持加解密与签名验签,公私钥与密文格式(C1C3C2 / C1C2C3 等)可选。
- 签名结果可与服务端返回值对照,定位格式或编码差异。
- 私钥只在当前页面使用,不会上传。
相关工具
SM2 加解密与签名与其他 44 个工具一样,全部计算都在你的浏览器里完成:输入、密钥与文件不会发送到服务器,页面首次加载后可离线使用。