SM2国密在线加密解密

用于加密数据,可以公开分享
⚠️ 用于解密数据,请妥善保管,切勿泄露
原文编码:
密文编码:

处理结果

SM2国密加密工具使用指南

SM2是中国国家密码管理局于2010年发布的椭圆曲线公钥密码算法,是国家商用密码标准(国密算法)的重要组成部分。SM2于2016年成为国家密码行业标准(GB/T 32918),2018年成为国家标准。本工具提供专业的SM2在线加密解密服务,支持256位固定密钥长度,C1C3C2/C1C2C3两种密文顺序,HEX/PEM两种密钥格式,适用于政务系统、金融机构等需要国密合规的场景。

核心功能详解

🇨🇳 国密标准合规

完全符合GB/T 32918国家标准,满足国密合规要求。

SM2-256示例:
输入:国密算法测试
公钥: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编码,标准格式
  • 格式可互相转换
  • 自动密钥对生成
  • 一键复制公钥/私钥
  • 支持手动导入已有密钥

使用步骤

1

选择密文顺序和密钥格式

选择密文数据顺序(推荐使用C1C3C2新标准)。页面会自动生成HEX格式的SM2密钥对,也可以切换为PEM格式,然后重新生成

2

输入要加密的数据

在文本编辑器中输入要加密的内容。SM2建议单次加密不超过32-64字节。如需加密大文件,请使用混合加密方案

3

执行加密或解密

点击"加密"使用公钥加密数据,点击"解密"使用私钥解密密文。右侧显示处理结果和统计信息,可以复制或导出

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(推荐)

混合加密方案:

  1. 生成随机SM4密钥(128位)
  2. 使用SM4密钥加密实际数据
  3. 使用SM2公钥加密SM4密钥
  4. 传输SM4密文和SM2密文
  5. 接收方用SM2私钥解密SM4密钥
  6. 使用SM4密钥解密实际数据

优势:结合SM2安全性和SM4高效性,完全国密合规

✍️ SM2 + SM3

数字签名方案:

  • 使用SM3计算数据摘要
  • 使用SM2私钥对摘要签名
  • 使用SM2公钥验证签名
  • 保证数据完整性和来源可信

应用:电子合同、软件签名、身份认证

安全注意事项

⚠️ 避免常见错误

  • ❌ 混用C1C3C2和C1C2C3顺序
  • ❌ 直接用SM2加密大文件
  • ❌ 明文存储私钥
  • ❌ 使用非标准的椭圆曲线参数
  • ❌ 忽略密钥格式差异
  • ❌ 使用未经认证的密码库
  • ❌ 不验证密文完整性(C3)

✅ 推荐实践

  • ✅ 统一使用C1C3C2新标准
  • ✅ 采用混合加密处理大数据
  • ✅ 加密并限制私钥访问
  • ✅ 使用国密认证的密码产品
  • ✅ HEX格式用于国密系统
  • ✅ 定期进行密评和安全审计
  • ✅ 与SM3、SM4配合使用

国密改造指南

1

评估合规要求

确认系统是否属于关键信息基础设施,是否需要通过密评。咨询国家密码管理局认证的测评机构,了解具体合规要求

2

选择国密产品

选择通过国家密码管理局商用密码产品认证的密码模块、密码设备或密码服务。常用的有GmSSL、Tongsuo等开源库

3

实施算法替换

将RSA替换为SM2,AES替换为SM4,SHA替换为SM3。建议采用双算法过渡方案,逐步完成迁移

4

密钥管理改造

建立符合国密标准的密钥管理体系,包括密钥生成、存储、分发、轮换、销毁等全生命周期管理

5

测试和密评

进行充分的功能测试和性能测试。申请商用密码应用安全性评估(密评),通过后方可上线运行

跨语言实现参考

💻 常用编程语言

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)文档
  • 国家密码管理局官网