国密算法入门:SM2/SM3/SM4/SM9/ZUC 是什么、谁在用、怎么落地
国密是什么
国密算法 = 中国国家密码管理局发布的商用密码(SM = 商密)算法标准集。它不是一套新密码学理论——算法原理与国际算法同源(椭圆曲线、杂凑、分组密码),而是由中国主导设计的标准实现,用于密码自主可控与合规场景。
五个算法各自管什么
| 算法 | 类型 | 国际对应 | 一句话用途 | |---|---|---|---| | SM2 | 椭圆曲线公钥 | RSA / ECDSA | 签名、密钥交换、公钥加密 | | SM3 | 密码杂凑 | SHA-256 | 摘要、完整性校验 | | SM4 | 分组密码 | AES-128 | 数据加密(对称) | | SM9 | 标识密码 | IBE | 用身份(邮箱/手机号)直接做公钥 | | ZUC(祖冲之) | 序列密码 | Snow 3G / AES-CTR | 4G/5G 通信流加密 |
开发者日常打交道的主要是前三个(合称国密三件套),SM9 和 ZUC 偏专用场景(标识密码、电信)。
与国际算法的对应关系
签名/加密层: RSA, ECDSA ←→ SM2(256 位椭圆曲线)
摘要层: SHA-256 ←→ SM3(256 位输出)
对称加密层: AES-128 ←→ SM4(128 位分组/密钥)
组合套件: TLS-RSA/AES ←→ TLCP(国密 TLS,ECC-SM4-SM3 套件)
安全强度等价换算(心里有数即可):
- SM2 256 位 ≈ RSA 3072 位
- SM3 ≈ SHA-256
- SM4 ≈ AES-128
谁在用国密
- 政务:电子签章、电子证照、政务云(GB/T 38540 等一串国标围着国密转)
- 金融:银行核心系统改造、银联标准、数字货币相关
- 等保 2.0:三级及以上系统被要求使用商用密码(这是最普遍的驱动力)
- 央企/关键基础设施:能源、交通、水利的信息化
- 密评:《商用密码应用安全性评估》过评要求算法合规
开发者怎么落地:分层视角
应用层(Java/Go/Node/前端)
- Java:BouncyCastle(
SM2/SM3/SM4在org.bouncycastle.crypto.engines)或国密专项库 hutool 的 SmUtil - 前端/Node:sm-crypto(纯 JS,加解密/签名)
- Go:
github.com/tjfoc/gmssl、github.com/emmansun/gmsm
协议层(HTTPS 国密化)
标准 OpenSSL 不支持国密 TLS。可选:
- Tongsuo(铜锁,原 BabaSSL):蚂蚁开源,兼容 OpenSSL 语法,支持国密 TLS 1.3 与双证书
- GmSSL:北大开源,国密 TLS(TLCP 协议,GB/T 38656)
- 双证书模式:SM2 证书 + RSA 证书并行,按客户端能力协商(过渡期标配)
硬件层
生产密钥管理要求「通过国密局认证的密码产品」:PCI-E 密码卡、UKey、云密码机(云厂商的 KMS 国密版)。应用层 JS/软件实现适合开发联调,生产签名私钥不应离开密码硬件——这是密评的硬要求。
用在线工具理解算法行为
读十遍文档不如跑一次加解密。本站提供全套国密在线工具(纯浏览器本地计算,输入不上传):
- SM2 加解密与签名:生成密钥对 → 加密 → 解密 → 签名 → 验签,完整走一遍公钥算法流程;联调时可当「已验证正确的对端」用
- SM3 哈希计算器:验证标准测试向量(
SM3("abc") = 66c7f0f4...),排查编码问题 - SM4 加解密:ECB/CBC 模式对比,体会「相同分组在 ECB 下密文相同」的模式泄露
新手最常问的三个问题
Q:国密算法安全吗?还是「弱化的国产算法」? SM2/SM3/SM4 的设计经过公开国际评审(SM4 曾在 IETF RFC 8998 发布),目前没有任何实际攻击先例,强度与国际对应算法同级。「国密=弱密码」是误解。
Q:我司系统必须上国密吗? 看两个信号:等保级别(三级以上基本跑不掉)+ 行业监管(政务/金融/央企)。互联网 ToC 业务一般无硬性要求。
Q:改造工作量多大? 分三档:只换算法层(代码里 RSA→SM2 调用替换)约人天级;协议层国密 TLS(Tongsuo + 国密证书)约人周级;完整密评合规(密码硬件 + 管理制度)是人月级工程。
排查清单
- 分清三件套定位:SM2 签名加密 / SM3 摘要 / SM4 对称加密
- 合规判断:等保三级 + 政务/金融 → 必须国密
- 联调先用在线工具验证算法层正确性,再查协议层
- 生产私钥进密码硬件,软件实现只做开发验证
- 国密 TLS 选 Tongsuo/GmSSL,过渡期双证书并行
本文由 ToolVault 工具匣 提供。相关工具:SM2 加解密与签名、SM3 哈希、SM4 加解密。相关阅读:SM2 和 RSA 怎么选、SM3 和 SHA-256 的区别。访问 首页 查看更多开发者工具。
相关工具
相关文章
SM3 和 SHA-256 有什么区别?国密哈希与 NIST 哈希的对比与选择
SM3 与 SHA-256 全面对比:同为 256 位摘要的安全强度、迭代结构差异、标准测试向量(SM3 abc=66c7f0f4...)、性能对比、国密合规场景要求,以及 HMAC 构造的通用性。附在线 SM3 计算工具与标准测试向量验证方法。
SM2 和 RSA 怎么选?国密椭圆曲线与国际公钥算法的完整对比
SM2 和 RSA 的选型对比:安全强度换算(256 位 SM2 ≈ 3072 位 RSA)、性能差异(签名验签各有优势)、密钥长度、C1C3C2 与 C1C2C3 密文格式兼容坑、国密合规要求(等保/政务/金融),附在线 SM2 工具实操验证方法。
JWT 解码后提示 signature invalid / 验签失败,正常吗?
JWT 解码后提示 signature invalid 或验签失败正常吗?区分"解码"与"验签"两个动作,讲清失败的常见原因,并告诉你什么时候该看内容、什么时候才需要真正验签。