�,
复制它再拿去加密不会得到原数据——请用下面的原始字节,
或把上方「明文编码」切到 Hex,直接以十六进制查看和编辑。
�,
复制它再拿去加密不会得到原数据——请用下面的原始字节,
或把上方「明文编码」切到 Hex,直接以十六进制查看和编辑。
1234567812345678 处理。
国密 SM2/SM3/SM4 在浏览器本地完成我国商用密码国家标准算法的加解密、签名与摘要计算。SM4 支持 ECB、CBC、GCM 三种模式与 PKCS#7 填充;SM2 支持密钥对生成、公钥加密私钥解密、C1C3C2 与 C1C2C3 两种密文排列、签名验签;SM3 支持摘要与 HMAC。做政务、金融、等保项目时,这三个算法通常是硬性要求。
| 算法 | 类型 | 国际对应 | 关键参数 |
|---|---|---|---|
| SM2 | 非对称 | ECDSA / ECIES | 256 位椭圆曲线 |
| SM3 | 摘要 | SHA-256 | 输出 256 位 |
| SM4 | 对称分组 | AES-128 | 密钥与分组均 128 位 |
国密互通问题几乎都出在密文格式上,而不是算法本身:
04;JavaScript 实现通常省略。本工具解密时两种都会试,加密时可用开关控制加不加。30 开头)而非三段直接拼接。还有一个不会报错、但会让你查很久的坑:压缩公钥的 02 / 03 前缀写反。两者都是曲线上的合法点,加密不会失败,但对方私钥解不开。不确定时改用 04 开头的未压缩公钥。
SM2 的签名流程比 ECDSA 多一步:先把用户标识、椭圆曲线参数与签名者公钥拼起来做一次 SM3,得到 Z 值,再把 Z 和报文一起做 SM3 作为待签摘要。
这意味着 userId 是签名的一部分——两端不一致,验签一定失败,而且报错信息通常只会告诉你”验签不通过”,很难联想到这里。国标默认值 1234567812345678 被绝大多数实现采用,没有特殊约定就别改。
用法几乎一样,切换成本很低:
普通互联网业务没有合规压力时,继续用 AES / RSA / SHA-256 完全没问题,生态和库支持都更成熟。
⚠️ 安全提醒:本页所有计算都在你的浏览器本地完成,不上传、不联网、不留存,密钥也不会写入本地存储。但请勿在此输入生产环境的真实密钥——工具不上传,不代表你所在的设备与网络环境是可信的。
按用途一一对应国际算法:SM2 ≈ RSA / ECDSA(非对称,用于加密和签名,基于 256 位椭圆曲线);SM3 ≈ SHA-256(摘要,输出同样是 256 位);SM4 ≈ AES-128(对称分组密码,分组和密钥都是 128 位)。它们是我国商用密码国家标准,金融、政务、等保测评项目通常强制要求使用。
只是三段的拼接顺序不同,内容完全一样:C1 是椭圆曲线点(64 字节),C3 是 SM3 校验值(32 字节),C2 是与明文等长的密文数据。2012 年之前的旧实现按 C1C2C3 排列,GM/T 0009-2012 之后改为 C1C3C2,现在是默认。解不开时第一件事就是把这两个选项对调再试。
按顺序排查三项:① 04 前缀 —— Java BouncyCastle 输出的密文通常在最前面多两位 04,本工具解密时会自动识别,带不带都能解;② 排列顺序 —— C1C3C2 与 C1C2C3 对调试试;③ 编码格式 —— 对方可能给的是 ASN.1 DER 编码(以 30 开头),勾上对应选项即可。
它参与 Z 值计算——SM2 签名会先把用户标识、曲线参数和公钥一起做 SM3 得到 Z,再和报文一起签。所以两端的 userId 必须完全一致,否则验签必然不过。国标默认值是 1234567812345678,绝大多数实现都用它,留空时本工具也按这个处理。除非对方明确指定,不要改。
能用,工具会自动识别 66 位的压缩公钥并校验它是否落在曲线上。但要特别当心一件事:02 和 03 前缀写反不会报任何错——02+X 和 03+X 分别对应 Y 与 −Y,两个都是曲线上的合法点,只是属于不同的密钥。前缀写错时加密照样成功,但对方的私钥永远解不开。这一点密码学上无法在加密阶段检测,任何工具都做不到,只能靠核对来源。拿不准就用 130 位的未压缩公钥(04 开头)。
密钥固定 16 字节(128 位),不接受其它长度;CBC 模式的 IV 也是 16 字节;GCM 模式的 IV 长度不限,但推荐 12 字节。注意密钥的输入编码:同一串 0123456789abcdef 按 UTF-8 是 16 字节、按 Hex 只有 8 字节,这是"密钥长度不对"最常见的原因。
能。明文框右上角有 UTF-8 / Hex / Base64 三档,加密时按它解析输入、解密时按它渲染结果;SM4 明文、SM2 加解密明文、SM2 签名原文三处各自独立设置。所以「手里是一串 hex 报文要加密」和「解出来不是文本、想直接看字节」用的是同一个开关。切换档位时,工具自己填进去的内容(比如刚解密出来的结果)会按原始字节重新渲染;你自己粘进去的内容不会被改写——否则把粘进来的 hex 再按 UTF-8 编码一遍,会悄悄变成另一串数据。
安全强度大体相当。SM4 与 AES-128 同为 128 位密钥的分组密码,SM3 与 SHA-256 同为 256 位摘要,SM2 基于 256 位椭圆曲线、强度接近 ECDSA-P256,明显强于 2048 位 RSA。SM2、SM3、SM9 已被 ISO/IEC 采纳为国际标准。选国密通常不是出于安全性考量,而是合规要求——金融、政务、关键信息基础设施的等保与密评会明确要求。