国密SM2

在线国密SM2加密解密 / 数字签名 / 密钥对生成,纯浏览器端运行。

SM2 操作

手动输入的密钥自动同步到各选项卡。公钥: 04+64+64=130 hex字符,私钥: 64 hex字符。

等待验签...

关于 SM2

SM2 是中国国家密码管理局发布的椭圆曲线公钥密码算法标准(GM/T 0003-2012),基于 ECC(Elliptic Curve Cryptography)体系。SM2 已被纳入 ISO/IEC 14888-3 国际标准,广泛应用于政务系统、金融IC卡、区块链等场景。

技术参数

  • 椭圆曲线:y² = x³ + ax + b(Fp-256,256位素域)
  • 密钥长度:私钥 256 位(32字节),公钥 512 位(64字节)+ 1字节前缀 04
  • 签名长度:DER 编码约 70~72 字节
  • 密文结构:C1C3C2(C1=64字节,C3=32字节,C2=明文长度)
  • 安全级别:128 位(等价于 RSA-3072)

主要功能

  • 加密解密:使用公钥加密、私钥解密,支持任意长度明文
  • 数字签名:使用私钥签名、公钥验签,确保数据完整性和不可否认性
  • 密钥交换:通信双方协商会话密钥(本工具暂未实现)
使用说明
  1. 生成密钥对:点击"生成密钥对"按钮,自动生成私钥和公钥(十六进制)。
  2. 手动输入密钥:可在密钥对面板下方手动输入已有的私钥和公钥,自动同步到各选项卡。
  3. 加密:切换到"加密"标签,输入明文和公钥(130 hex字符),点击"加密"。
  4. 解密:切换到"解密"标签,输入密文和私钥,点击"解密"。
  5. 签名:切换到"签名"标签,输入消息和私钥,点击"签名",生成 DER 编码的签名。
  6. 验签:切换到"验签"标签,输入消息、签名和公钥,点击"验签"。
  7. 加载示例:点击"加载示例"按钮,自动生成示例密钥对和数据供测试。
  8. 复制:点击"复制"按钮复制密钥、密文或签名到剪贴板。
常见问题
Q: SM2 和 RSA 有什么区别?
A: SM2 基于椭圆曲线(ECC),同等安全强度下密钥更短(256位 ≈ RSA-3072),计算速度更快。SM2 是中国国家标准,RSA 是国际通用标准。
Q: 生成的密钥对是否可以用于生产环境?
A: 可以,但建议在安全环境中生成。本工具使用浏览器端的 sm-crypto 库生成密钥对,私钥不会离开您的浏览器。如需更高安全性,建议使用硬件安全模块(HSM)或专用密钥管理系统。
Q: 密文为什么比原文长很多?
A: SM2 密文采用 C1C3C2 结构:C1(椭圆曲线点,64字节)+ C3(杂凑值,32字节)+ C2(密文数据与明文等长)。因此总长度比明文长 96 字节。
Q: 公钥为什么以 04 开头?
A: 04 是未压缩公钥的标识前缀,表示后面跟着两个坐标(x||y),各 32 字节。SM2 标准公钥长度为 65 字节(04 + x + y)。
Q: 为什么签名每次都不一样?
A: SM2 签名算法中包含随机数 k,因此对同一消息多次签名会产生不同的签名值。验签时只要能通过验证即视为有效签名。
Q: 本工具支持 SM3 和 SM4 吗?
A: 本工具专注于 SM2 非对称加密。SM3(密码杂凑)和 SM4(对称加密)可以参考本站的其他工具。