SM2国密在线加密解密
处理结果
SM2国密加密工具使用指南
SM2是中国国家密码管理局于2010年发布的椭圆曲线公钥密码算法,是国家商用密码标准(国密算法)的重要组成部分。SM2于2016年成为国家密码行业标准(GB/T 32918),2018年成为国家标准。本工具提供专业的SM2在线加密解密服务,支持256位固定密钥长度,C1C3C2/C1C2C3两种密文顺序,HEX/PEM两种密钥格式,适用于政务系统、金融机构等需要国密合规的场景。
核心功能详解
🇨🇳 国密标准合规
完全符合GB/T 32918国家标准,满足国密合规要求。
输入:
国密算法测试公钥:
256位HEX格式公钥密文顺序:
C1C3C2(新标准)输出:
Base64编码的密文应用场景:
- 政务系统数据加密
- 金融机构信息保护
- 企业国密合规应用
- 电子政务、电子商务
🔐 椭圆曲线加密
基于椭圆曲线离散对数问题,256位密钥提供128位安全强度。
- 密钥长度:固定256位(32字节)
- 安全强度:128位(相当于RSA-3072)
- 曲线参数:SM2推荐曲线
- 密钥尺寸:公钥65字节,私钥32字节
- 性能优异:比RSA快,密钥更短
- 抗量子能力:与RSA相当
🔄 密文顺序兼容
支持C1C3C2(新标准)和C1C2C3(旧标准)两种密文顺序。
- C1C3C2:新国密标准(推荐)
- C1C2C3:旧国密标准(兼容)
- C1:椭圆曲线点(64字节)
- C2:密文数据(与明文等长)
- C3:SM3摘要值(32字节)
- 两种顺序可互相转换
📝 双格式支持
支持HEX和PEM两种密钥格式,HEX为SM2原生格式(默认)。
- HEX格式:16进制编码,原生格式(推荐)
- PEM格式:Base64编码,标准格式
- 格式可互相转换
- 自动密钥对生成
- 一键复制公钥/私钥
- 支持手动导入已有密钥
使用步骤
选择密文顺序和密钥格式
选择密文数据顺序(推荐使用C1C3C2新标准)。页面会自动生成HEX格式的SM2密钥对,也可以切换为PEM格式,然后重新生成
输入要加密的数据
在文本编辑器中输入要加密的内容。SM2建议单次加密不超过32-64字节。如需加密大文件,请使用混合加密方案
执行加密或解密
点击"加密"使用公钥加密数据,点击"解密"使用私钥解密密文。右侧显示处理结果和统计信息,可以复制或导出
SM2国密算法详解
SM2是中国自主设计的椭圆曲线公钥密码算法,包括数字签名、密钥交换和公钥加密三部分。SM2采用256位密钥长度,安全性与国际ECC P-256相当,但采用了不同的椭圆曲线参数。SM2已被广泛应用于中国的电子政务、金融系统、电子商务等领域,是国密算法体系的核心组成部分。
SM2 算法原理
🔢 椭圆曲线基础
数学基础:椭圆曲线离散对数问题
- 曲线方程:y² = x³ + ax + b (mod p)
- SM2推荐曲线:特定的a、b、p参数
- 基点G:曲线上的生成元
- 私钥d:随机整数(256位)
- 公钥P:P = d × G(椭圆曲线点乘)
- 安全性基于ECDLP难题
🔐 加密过程
- 生成随机数k
- 计算C1 = k × G(椭圆曲线点)
- 计算S = k × P(共享密钥点)
- 使用KDF派生加密密钥
- 计算C2 = M ⊕ 密钥(密文数据)
- 计算C3 = SM3(S || M)(摘要)
- 输出密文:C1 || C3 || C2 或 C1 || C2 || C3
SM2 密文结构详解
📦 密文组成部分
C1 - 椭圆曲线点(64字节):
- 随机点k×G的坐标
- 包含x和y坐标各32字节
- 用于接收方计算共享密钥
- 每次加密都不同(随机k)
C2 - 密文数据(变长):
- 明文与密钥流异或的结果
- 长度与明文相同
- 主要的加密数据
C3 - SM3摘要(32字节):
- 使用SM3哈希算法
- 保证数据完整性
- 防止密文被篡改
🔄 密文顺序标准
C1C2C3(旧标准):
- 最早的国密标准版本
- C1 + C2 + C3 顺序排列
- 部分旧系统仍在使用
- 需要兼容时选择此选项
C1C3C2(新标准,推荐):
- 2016年后的国密标准
- C1 + C3 + C2 顺序排列
- 更符合密码学设计原则
- 先验证摘要再处理数据
- 新系统应使用此顺序
SM2 技术特点
🇨🇳 国家标准
SM2是中国国家密码标准(GB/T 32918),已被纳入ISO/IEC国际标准。在政务、金融等关键领域具有法律效力,是国密合规的必选算法。
🔒 安全可靠
经过国家密码管理局严格评估,256位密钥提供128位安全强度,安全性与国际ECC P-256相当,能够抵御已知的各种密码攻击。
⚡ 性能优异
基于椭圆曲线的SM2算法,在相同安全强度下,密钥长度仅为RSA的1/12,加密速度快,密钥生成和验证效率高。
🌐 广泛支持
主流国产密码库(GmSSL、Tongsuo等)完全支持,各种编程语言都有成熟实现。与SM3、SM4组成完整的国密算法体系。
SM2 vs RSA vs ECC 对比
| 特性 | RSA-2048 | ECC P-256 | SM2-256 |
|---|---|---|---|
| 安全强度 | 112位 | 128位 | 128位 |
| 密钥长度 | 2048位 | 256位 | 256位(固定) |
| 公钥大小 | 256字节 | 65字节 | 65字节 |
| 私钥大小 | 1192字节 | 32字节 | 32字节 |
| 加密速度 | 慢 | 快 | 快 |
| 标准化 | PKCS#1、PKCS#8 | NIST FIPS 186 | GB/T 32918 |
| 国密合规 | ❌ 否 | ❌ 否 | ✅ 是 |
| 推荐场景 | 国际通用 | 现代应用 | 国密合规 |
SM2 应用场景
🏛️ 政务系统
电子政务、政府信息系统、公文流转等政务领域的数据加密和数字签名
🏦 金融行业
银行系统、证券交易、保险业务、支付系统等金融领域的国密合规应用
📱 移动支付
支付宝、微信支付等移动支付应用中的敏感信息加密和交易签名
🔐 数字证书
国密SSL证书、国密CA体系、企业数字证书等PKI基础设施
🏢 企业应用
需要国密合规的企业信息系统、OA系统、ERP系统等商业应用
🔒 密钥交换
使用SM2进行密钥协商,结合SM4对称加密实现高效的混合加密
✍️ 数字签名
电子合同签名、软件代码签名、文档数字签名等身份认证场景
🌐 物联网
智能设备、工业控制系统、智慧城市等物联网场景的国密安全保护
SM2使用建议与最佳实践
何时必须使用SM2
✅ 强制国密合规场景
根据《商用密码应用安全性评估管理办法》,以下场景必须使用国密算法:
- 关键信息基础设施
- 政务系统和电子政务
- 金融机构核心系统
- 电信、能源等重要行业
- 涉及国家秘密的系统
- 需要通过密评的系统
✅ 推荐使用场景
- 中国境内部署的系统
- 与政府、金融机构对接的系统
- 需要国产化替代的项目
- 敏感数据保护
- 企业内部高安全需求
- 面向国内市场的产品
密文顺序选择建议
🆕 C1C3C2(新标准,推荐)
优势:
- 符合2016年后的国密标准
- 更符合密码学设计原则
- 先验证完整性再处理数据
- 新系统的标准选择
- 与国际标准更接近
适用场景:
- 新系统开发(强烈推荐)
- 系统升级改造
- 标准合规项目
- 没有兼容性负担的场景
🔄 C1C2C3(旧标准,兼容)
特点:
- 2016年前的国密标准
- 部分旧系统仍在使用
- 需要向后兼容时选择
- 功能上与新标准等效
适用场景:
- 与旧系统对接
- 历史数据解密
- 特定厂商设备要求
- 过渡期兼容需求
密钥格式选择建议
🔢 HEX格式(推荐)
优势:
- SM2的原生格式
- 格式简洁,便于处理
- 国密库通常使用此格式
- 调试和查看方便
- 跨平台传输稳定
适用场景:
- 纯国密系统(推荐)
- 使用国密库开发
- 内部系统通信
- 需要直接操作密钥字节
📝 PEM格式
优势:
- 标准的密钥交换格式
- 与RSA、ECC格式统一
- 便于证书管理
- OpenSSL等工具兼容
适用场景:
- 混合密码系统
- 需要证书管理
- 与国际标准对接
- 使用通用密码库
SM2 与其他算法配合使用
🔐 SM2 + SM4(推荐)
混合加密方案:
- 生成随机SM4密钥(128位)
- 使用SM4密钥加密实际数据
- 使用SM2公钥加密SM4密钥
- 传输SM4密文和SM2密文
- 接收方用SM2私钥解密SM4密钥
- 使用SM4密钥解密实际数据
优势:结合SM2安全性和SM4高效性,完全国密合规
✍️ SM2 + SM3
数字签名方案:
- 使用SM3计算数据摘要
- 使用SM2私钥对摘要签名
- 使用SM2公钥验证签名
- 保证数据完整性和来源可信
应用:电子合同、软件签名、身份认证
安全注意事项
⚠️ 避免常见错误
- ❌ 混用C1C3C2和C1C2C3顺序
- ❌ 直接用SM2加密大文件
- ❌ 明文存储私钥
- ❌ 使用非标准的椭圆曲线参数
- ❌ 忽略密钥格式差异
- ❌ 使用未经认证的密码库
- ❌ 不验证密文完整性(C3)
✅ 推荐实践
- ✅ 统一使用C1C3C2新标准
- ✅ 采用混合加密处理大数据
- ✅ 加密并限制私钥访问
- ✅ 使用国密认证的密码产品
- ✅ HEX格式用于国密系统
- ✅ 定期进行密评和安全审计
- ✅ 与SM3、SM4配合使用
国密改造指南
评估合规要求
确认系统是否属于关键信息基础设施,是否需要通过密评。咨询国家密码管理局认证的测评机构,了解具体合规要求
选择国密产品
选择通过国家密码管理局商用密码产品认证的密码模块、密码设备或密码服务。常用的有GmSSL、Tongsuo等开源库
实施算法替换
将RSA替换为SM2,AES替换为SM4,SHA替换为SM3。建议采用双算法过渡方案,逐步完成迁移
密钥管理改造
建立符合国密标准的密钥管理体系,包括密钥生成、存储、分发、轮换、销毁等全生命周期管理
测试和密评
进行充分的功能测试和性能测试。申请商用密码应用安全性评估(密评),通过后方可上线运行
跨语言实现参考
💻 常用编程语言
JavaScript/Node.js:
- sm-crypto(本工具使用)- 浏览器端
- node-sm-crypto - Node.js端
Java:
- Bouncy Castle(支持SM2)
- 各厂商国密Java库
Python:
- gmssl - Python国密库
- python-sm2
Go:
- github.com/tjfoc/gmsm - Go国密库
C/C++:
- GmSSL - 开源国密工具包
- Tongsuo(原BabaSSL)
🔧 命令行工具
GmSSL:
- 生成SM2密钥对
- SM2加密解密
- SM2数字签名
- 国密证书管理
OpenSSL(支持国密):
- 需要国密补丁或Tongsuo版本
- 支持SM2/SM3/SM4
- 国密SSL/TLS
常见问题
❓ SM2和ECC有什么区别?
SM2和ECC都是基于椭圆曲线的公钥密码算法,但SM2使用不同的曲线参数。SM2采用中国自主设计的推荐曲线,而国际ECC通常使用NIST曲线(如P-256)。两者安全强度相当,但SM2是中国国家标准,在国密合规场景下必须使用SM2,不能用国际ECC替代。
❓ 什么时候必须使用SM2?
根据《商用密码应用安全性评估管理办法》,关键信息基础设施、重要网络和信息系统必须使用商用密码保护。具体包括:政务系统、金融机构、电信运营商、能源企业、重要工业控制系统等。这些场景下必须使用SM2等国密算法,并通过密评(商用密码应用安全性评估)。
❓ C1C3C2和C1C2C3如何选择?
新系统强烈推荐使用C1C3C2,这是2016年后的国密标准,更符合密码学设计原则(先验证完整性再处理数据)。仅在以下情况使用C1C2C3:1)需要与2016年前的旧系统对接;2)硬件设备仅支持旧标准;3)解密历史数据。两种顺序可以互相转换,但必须加密和解密使用相同顺序。
❓ SM2的HEX和PEM格式有什么区别?
HEX格式是SM2的原生格式,直接以16进制表示密钥字节,简洁高效,是国密库的常用格式。PEM格式是标准的密钥交换格式,使用Base64编码并加上头尾标记,与RSA、ECC格式统一。推荐纯国密系统使用HEX,需要与国际标准对接或证书管理时使用PEM。
❓ 如何通过密评?
通过密评需要:1)使用经国家密码管理局认证的商用密码产品;2)建立完善的密钥管理体系;3)正确实施SM2/SM3/SM4等国密算法;4)编写密码应用方案和安全策略;5)聘请有资质的测评机构进行评估。建议在系统设计阶段就考虑密评要求,避免后期大规模改造。
学习资源
📚 技术标准
- GB/T 32918.1-5 - SM2标准
- GB/T 32905 - SM3标准
- GB/T 32907 - SM4标准
- GM/T 0009 - SM2密码算法应用规范
- 《商用密码应用安全性评估管理办法》
🔧 工具文档
- GmSSL文档和教程
- sm-crypto使用指南
- Tongsuo(原BabaSSL)文档
- 国家密码管理局官网