#01
什么是 SM2?
SM2 是《中华人民共和国密码行业标准》(GM/T 0003-2012)中规定的非对称加密算法,基于 椭圆曲线离散对数问题(ECDLP)。在同等安全强度下,SM2 的密钥长度(256 位)远小于 RSA(3072 位),且在签名与加密方面表现更优。
SM2 定义了三类核心操作:公钥加密 / 私钥解密(用于数据保密传输)、私钥签名 / 公钥验签(用于身份认证与防篡改)、以及基于椭圆曲线的密钥交换(SM2 Key Exchange)。
本工具可在浏览器本地一次性完成密钥生成、加密、解密、签名与验签,是调试国密接口、验证密文格式的高效辅助手段。
#02
密钥结构与密文格式
SM2 采用的椭圆曲线方程为 y² = x³ + ax + b,在标准素数域 GF(p) 上定义,其中 p 为 256 位大素数。一个合法的 SM2 密钥对包含:
- 私钥:一段 256 位的随机整数,必须保密保存。
- 公钥:由私钥乘以椭圆曲线基点 G 得到的 64 字节(256 位 x || 256 位 y)曲线点,通常以 04 前缀标识未压缩形式。
密文排列顺序有两种主流规范:C1C2C3(旧版,按顺序为随机数公钥 → 密文数据 → 校验摘要),以及 C1C3C2(新国密标准,先放校验摘要再放密文数据)。本工具支持两种格式切换,并可在验签时指定签名编码为 DER (ASN.1) 或 R|S 拼接。
#03
数据安全与隐私说明
请牢记:SM2 的公钥加密仅保障数据在传输阶段的保密性,不替代传输层安全。实际部署中应配合 SM3 摘要、SM4 对称加密,并在 TLS/HTTPS 通道下使用。
本工具的密钥生成、加解密与签名过程全部发生在您的浏览器本地,不会上传至服务器,也不会写入 localStorage。
几条额外建议:
- 使用 生产私钥 时请在隐私窗口或离线环境操作,并及时清空输入。
- 生产环境的 SM2 私钥必须以加密方式存储(如通过 PKCS#8 + 口令、或 HSM 密钥管理硬件)。
- 签名/验签操作请明确约定 UserID(默认常为 1234567812345678),避免不一致导致验签失败。
- 对接第三方系统时,请先确认双方使用同一种密文排列顺序(C1C2C3 vs C1C3C2)与签名编码格式。