反馈

国密 SM2/SM3/SM4 加解密

📖 工具说明

1. 这个工具能做什么?

一个页面覆盖国家商用密码(国密)最常用的三种算法:顶部下拉切换 SM2 / SM3 / SM4,输入即算,结果一键复制。全部运算在浏览器本地完成,密钥、明文、密文绝不上传服务器

算法 类型 用途 本工具支持
SM2 非对称(椭圆曲线 ECC) 加密 / 解密、密钥交换、数字签名。256 位强度约等于 RSA-3072 生成密钥对、公钥加密、私钥解密,C1C3C2 / C1C2C3 两种密文排序
SM3 密码杂凑(Hash) 生成 256 位摘要,抗碰撞性优于 MD5 / SHA-1,常作为 SM2 签名的预处理 文本 SM3、带 Key 的 HMAC-SM3
SM4 对称分组加密 128 位分组 / 128 位密钥,用于文件、报文、信道加密 ECB / CBC 模式,PKCS#7 填充,Hex 输出

2. 为什么开发中要用国密?

随着信创(信息技术应用创新)推进,SM 系列已是国内多数安全场景的法定标准:


3. 使用方法

SM2

  1. 没有密钥就点「生成」,得到 04 开头的 130 位十六进制公钥和 64 位私钥,私钥务必妥善保存。
  2. 加密:输入明文,粘贴公钥,选排序模式(默认 C1C3C2),点「加密」得到十六进制(Hex)密文。
  3. 解密:粘贴 Hex 密文,输入对应私钥,模式与加密时一致,点「解密」。

SM3

  1. 输入待计算的文本。
  2. 需要 HMAC 时在「HMAC Key」填十六进制密钥,留空即普通 SM3。
  3. 点「计算 Hash」,得到 64 位十六进制(256 位)摘要。

SM4

  1. 填 16 字节密钥(32 位十六进制,如 0123456789abcdeffedcba9876543210)。
  2. 选模式:ECB 直接可用;CBC 需再填 16 字节 IV(推荐 CBC + 随机 IV)。
  3. 输入明文点「加密」,或粘贴 Hex 密文点「解密」。

4. 常用参数对照

参数 规格 说明
SM2 私钥 32 字节 / 64 位十六进制 最高级别秘密,勿泄露
SM2 公钥 64 字节 / 130 位十六进制,04 开头 非压缩格式
SM2 密文排序 C1C3C2(新,默认)/ C1C2C3(旧) 与对端保持一致
SM3 摘要 256 位 / 64 位十六进制 定长,与 SHA-256 长度相同
SM4 密钥 16 字节 / 128 位 加解密唯一凭证
SM4 IV 16 字节(仅 CBC) 增加密文随机性
SM4 填充 PKCS#7 自动补齐到 16 字节整数倍

5. 常见问题

Q:结果和 Java BouncyCastle / GmSSL / OpenSSL 国密版对得上吗? A:本工具基于 sm-crypto 库,严格遵循 GM/T 标准。SM2 注意两端的密文排序(C1C3C2 / C1C2C3)要一致;SM4 注意模式、IV、填充方式一致;SM3 注意是否加了 HMAC Key。

Q:SM2 加密报错 / 解密结果为空? A:多数是密钥格式问题——公钥应为 04 开头共 130 位十六进制,私钥为 64 位十六进制。工具会提示不合法的长度与前缀。

Q:SM3 是加密吗? A:不是。SM3 是单向杂凑(Hash),不可逆,用于完整性校验和签名预处理。需要可逆的国密加密请用 SM4(对称)或 SM2(非对称)。

Q:数据安全吗? A:三种算法的运算都在浏览器前端完成,页面加载后即使断网也能用,输入内容不会发送到任何服务器。

📖 相关推荐