跳到主要内容
加解密工具

SM2 公钥加解密工具

面向国密公钥加密生成 SM2 密钥对并处理文本,支持常见 C1C3C2 与旧式 C1C2C3 排列。

SM2 公钥加解密区

密钥、明文和密文只在当前浏览器中处理,不会上传或保存。

高级设置 C1C3C2 · 04 未压缩公钥
默认使用当前规范常见的 C1C3C2;每次加密都会生成新的随机 C1。输出固定带 04 点格式标识,解密也兼容省略 04 的密文。

公钥接受连续或换行 Hex,以及可选 0x 前缀。

0 UTF-8 字节

SM2 Hex 密文结果

生成或输入 SM2 公钥后,可以加密 UTF-8 文本

密钥格式

公钥支持 04 未压缩和 02/03 压缩 Hex,私钥固定 32 字节。

密文格式

输出为带 04 的标准 Hex;不提供 ASN.1 密文封装。

功能边界

仅做公钥加密和私钥解密,不包含 SM2 签名、证书或密钥交换。

什么时候使用

适合对接明确要求国密 SM2 公钥加密的系统。它不用于签名验签,也不处理证书、PEM 或 ASN.1 密文。

快速使用

  1. 保持默认 C1C3C2 和未压缩公钥,点击“生成密钥对”。
  2. 加密时保留公钥并输入明文;解密时粘贴密文和配套私钥。
  3. 保存私钥时不要与密文放在同一位置,也不要在不可信设备上处理生产私钥。

工具说明

这个工具使用 SM2 公钥加密、私钥解密 UTF-8 文本,提供两种常见的原始密文排列:

  • C1C3C2:默认选择,适合新系统和当前常见接口。
  • C1C2C3:用于兼容仍采用旧排列的系统。

页面默认填入 04 未压缩公钥,用户也可以切换为 02/03 压缩公钥。密钥、C1 和密文都使用原始 Hex 表示,不使用 PEM、JWK 或 ASN.1 封装。

SM2 密钥生成、随机临时密钥、加密和解密全部在当前浏览器中完成,不会上传或保存。实现精确使用 [email protected],浏览器环境的随机数来自安全随机源。

密钥格式

公钥

加密支持两种十六进制公钥:

  • 未压缩公钥:65 字节,以 04 开头,后面依次是 32 字节 X 和 32 字节 Y。
  • 压缩公钥:33 字节,以 0203 开头,后面是 32 字节 X。

生成密钥对时可以选择页面优先填入哪一种公钥。两种表示对应同一个椭圆曲线点,解密仍使用相同的 32 字节私钥。

公钥和私钥输入接受整体 0x 前缀以及复制时产生的空格、换行;输出统一为连续小写 Hex。

私钥

私钥固定使用 32 字节 Hex,并且数值必须位于 SM2 曲线的有效私钥范围内。私钥不会写入本地存储,刷新或关闭页面后无法恢复。

密文格式

页面输出原始 Hex 密文,不使用 ASN.1 封装:

04 || C1.x || C1.y || C3 || C2

或者在兼容模式下:

04 || C1.x || C1.y || C2 || C3
  • 04 || C1.x || C1.y 是 65 字节未压缩临时公钥点。
  • C3 是 32 字节完整性摘要。
  • C2 是加密后的正文,长度与 UTF-8 明文字节数相同。

部分 SM2 库会省略 C1 开头的 04。本工具统一输出带 04 的格式,解密同时接受带或不带 04 的密文。

密文输入同样接受整体 0x 前缀和空白字符,但不接受 ASN.1 DER、Base64 或带算法元数据的封装。

安全提示

  • 每次加密都必须生成新的随机 C1,本工具会自动完成。
  • SM2 公钥和私钥必须配套,密文排列也必须与加密端一致。
  • C3 校验失败时,页面只返回统一的解密失败,不区分错误私钥、损坏密文或排列不一致。
  • 不要在不可信设备上处理生产私钥。

常见问题

C1C3C2 和 C1C2C3 可以自动识别吗?

不能可靠自动识别。两种格式没有自描述字段,解密时必须选择加密端实际使用的排列。

压缩公钥会降低安全性吗?

不会。压缩格式只是省略可由 X 和奇偶标识恢复的 Y 坐标,表示的仍是同一个 SM2 公钥点。

为什么同样的明文和公钥每次密文不同?

SM2 加密每次都会生成新的随机临时密钥和 C1,这是正常且必要的安全属性。

支持 SM2 签名或证书吗?

当前页面只提供公钥加密和私钥解密,不包含签名验签、X.509 证书、密钥交换或 ASN.1 密文。

密钥和内容会上传吗?

不会。密钥生成、加密、解密和复制都在当前浏览器中完成。