SM2 (国密) 加密解密

免费在线 SM2 (国密) 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。

National Standards
Other
输出

结果将显示在这里...

输入 加密

使用指南

关于 SM2

SM2 是中国国家椭圆曲线密码(ECC)标准,规范编号 GM/T 0003-2012,由国家密码管理局(OSCCA)于 2010 年发布。SM2 基于 256 位椭圆曲线,采用自定义曲线参数,安全性等同于 RSA-3072,但密钥更短、运算更快。SM2 定义了三项功能:非对称加密、数字签名和密钥交换。本工具实现加密功能——用公钥加密、用私钥解密,与 RSA 的概念模型相同。

国家标准强制要求:《密码法》(2020)规定,涉及国家安全、关键信息基础设施和公共金融服务的系统必须使用商用密码算法。如果您的系统需要符合中国合规要求(银行、政府、关键基础设施),SM2 是法规要求而非可选项。

使用步骤

SM2 加密和解密操作步骤如下:

1. 选择密文格式选择 C1C3C2(新标准,推荐)或 C1C2C3(旧标准,仅用于向后兼容)
2. 生成密钥对点击「生成密钥对」,生成 128 字符十六进制公钥和 64 字符十六进制私钥
3. 保存密钥复制并妥善保存公钥(128 字符十六进制)和私钥(64 字符十六进制)——私钥一旦丢失无法恢复
4. 加密粘贴公钥,输入明文,点击「加密」——输出为 Base64 编码的密文
5. 解密粘贴私钥,粘贴 Base64 密文,点击「解密」——还原原始明文
隐私保护:所有 SM2 运算均在浏览器本地完成,数据不会上传服务器,完全离线处理。

密文格式:C1C3C2 与 C1C2C3

SM2 密文由三个分量按特定顺序排列组成:

C1临时公钥点——64 字节(加密时使用的随机椭圆曲线点的 x、y 坐标)
C2密文主体——长度与明文相同,通过与 C1 派生的密钥流进行异或运算产生
C3哈希摘要——32 字节(明文和密钥材料的 SM3 哈希,用于完整性验证)
C1C3C2(新标准)顺序:临时密钥 → 哈希 → 密文。由更新后的 GM/T 0003.4-2012 标准规定。推荐所有新实现使用此格式。
C1C2C3(旧标准)顺序:临时密钥 → 密文 → 哈希。早期版本使用的原始排列顺序,仅在与旧系统互操作时使用。
格式不匹配风险:加密和解密必须使用相同的密文格式。若加密使用 C1C3C2 而解密使用 C1C2C3(反之亦然),解密将失败或输出乱码。与对方系统交换密文前,务必确认所用格式。

密钥格式

SM2 使用原始十六进制字符串作为密钥,而非 RSA 的 PEM 证书格式。了解密钥格式可避免常见的集成错误:

公钥(128 字符十六进制)64 字节,表示 SM2 曲线上某点的 x、y 坐标,以 x‖y 方式拼接。本工具的格式不包含「04」未压缩点前缀。
私钥(64 字符十六进制)32 字节,表示私有标量 d。务必妥善保管——这是解密由对应公钥加密数据的唯一方式。
无 PEM/DER 封装中国生态中 SM2 密钥通常以纯十六进制字符串传递,与使用 Base64 编码 PEM 头的 RSA 密钥不同。
互操作注意事项部分 SM2 库(如支持 SM2 的 OpenSSL)以 DER/PEM 格式编码密钥。请使用密码库提供的工具在格式之间进行转换。
密钥长度速查:公钥 = 128 个十六进制字符(64 字节);私钥 = 64 个十六进制字符(32 字节)。如果您的密钥长度不符,可能包含「04」前缀或使用了不同编码,请相应去除或转换。

常见问题

Q: SM2 和 RSA 有什么区别?

A: SM2 和 RSA 同为非对称算法:用公钥加密、用私钥解密。主要区别如下:数学基础:RSA 依赖大整数分解;SM2 依赖椭圆曲线离散对数。密钥长度:SM2 使用 256 位密钥,安全性等同于 RSA-3072,密钥和密文更短。性能:在相同安全级别下,SM2 的密钥生成和加解密运算均快于 RSA。合规性:SM2 是中国法规要求;RSA 是国际标准。选择建议:需符合中国密码法规的系统使用 SM2;需国际互操作的系统使用 RSA 或标准 ECC(P-256)。

Q: 什么情况下必须使用 SM2 而非 RSA 或 ECC?

A: 中国《密码法》(2020)及相关配套规定要求,涉及国家安全、关键信息基础设施和公众金融服务的系统必须使用商用密码算法。具体场景包括:政务系统——所有电子政务平台和认证系统。金融机构——中国人民银行要求境内银行核心系统使用 SM2/SM3/SM4。电子发票与许可证——国家税务总局等机构强制要求。跨境项目注意:如果系统面向国际运营且无需满足中国合规要求,建议使用标准 RSA 或 ECDSA(P-256),以获得更广泛的库支持和互操作性。

Q: 为什么使用正确的私钥仍然解密失败?

A: 最常见的原因是密文格式不匹配:密文用 C1C3C2 加密,却用 C1C2C3 模式解密(反之亦然)。请务必与加密方确认所用格式。其他原因包括:密文截断——SM2 密文最小为 97 字节(C1:64 字节 + C3:32 字节 + 至少 1 字节 C2),若 Base64 字符串过短,说明密文已损坏或被截断。密钥不对应——私钥与加密时使用的公钥不匹配。编码差异——部分系统在 C1 分量前添加「04」字节前缀,请确保双方对是否包含该前缀达成一致。

Q: SM2 是否安全?与标准 ECC(P-256)相比如何?

A: SM2 的 256 位密钥提供约等同于 RSA-3072 的安全强度,远超当前推荐的最低要求(RSA-2048)。与 NIST P-256 相比:两者均提供相近的 128 位安全级别。SM2 曲线使用 OSCCA 自定义的域参数,而非 NIST 参数。密码学评估:目前没有已知的针对 SM2 曲线的实际攻击。独立研究人员审查了曲线参数,未发现后门迹象,但其公开审查程度不及 NIST 曲线。实用注意:SM2 在中国以外的生态系统中支持有限——国际库(OpenSSL、BouncyCastle)支持 SM2,但大多数云服务商和浏览器不原生支持基于 SM2 的 TLS。国际场景请优先使用标准 ECC(P-256)。

Q: 本工具能否进行 SM2 数字签名?

A: 本工具仅实现 SM2 加密/解密功能。SM2 标准还定义了数字签名方案(类似 ECDSA)和密钥交换协议,但这些功能不在本工具范围内。如需签名和验签,请使用专门的 SM2 签名库。在中国合规场景中,SM2 数字签名通常与 SM3(国家哈希算法)和 SM4(国家对称密码)组合使用,构成完整的商用密码算法套件。

使用场景

推荐:政务系统身份认证

中国电子政务平台和公共服务系统依法须使用商用密码算法。SM2 用于身份认证、安全信道建立和官方文档的数字签名。若您构建的系统需要对接政府 API、处理公民身份数据或签发官方电子凭证,SM2 是法规强制要求而非可选项。搭配 SM3 用于哈希计算,搭配 SM4 用于对称加密,可构成完整合规的商用密码套件。

推荐配置:
  • ✅ SM2(政务系统强制要求)
  • ✅ SM2 + SM3 + SM4(完整商用密码套件)
  • ❌ 仅使用 RSA 或 ECC 无法满足中国监管要求
  • 💡 确认您的证书颁发机构支持 SM2 证书
推荐:金融机构交易加密

中国人民银行要求境内银行核心系统、支付平台和金融基础设施使用 SM2/SM3/SM4。SM2 用于加密敏感交易数据、保护卡片信息和保障银行间通信安全。境内网银应用、移动支付 SDK 和 POS 终端固件均须依法实现 SM2。即便是在华运营的外资银行,处理受中国金融法规监管的交易时也须合规。

推荐配置:
  • ✅ SM2(中国人民银行监管的金融系统强制要求)
  • ✅ 使用 C1C3C2 格式(现行标准)
  • 💡 与银行对接方确认密文格式和密钥编码格式
  • ❌ 在人行监管系统中 RSA 不能作为唯一算法
推荐:电子发票与官方许可证

中国电子发票系统、电子营业执照以及政府机构签发的数字证书均使用 SM2 进行签名和加密。纳税人系统、发票核验平台和全国企业信用信息公示系统依赖 SM2 保障官方文档的真实性和完整性。若您的系统需要对接这些平台——例如构建与国家税务总局发票系统交互的 ERP 系统——密码实现必须使用 SM2。

推荐配置:
  • ✅ SM2 用于文档签名和加密
  • ✅ SM3 用于签名内容的摘要计算
  • 💡 使用 CFCA 认证 CA 签发的 SM2 证书
  • ❌ 标准 TLS 证书(RSA/ECDSA)不满足受监管文档签名要求
推荐:关键基础设施安全通信

被认定为关键信息基础设施(CII)的电网、水务、交通网络和电信运营商须使用国家密码标准。SM2 用于设备认证、安全指令传输和运营人员身份验证。根据《网络安全法》及相关行业法规,在中国部署的工业控制系统(ICS/SCADA)同样须满足上述要求。

推荐配置:
  • ✅ SM2 用于设备和运营人员认证
  • ✅ SM4 用于大数据量加密(比 SM2 更高效)
  • 💡 实施证书轮换和密钥生命周期管理
  • 💡 参阅 OSCCA 针对具体行业的指导规范
不推荐:国际或跨境项目

如果您的系统面向国际运营或需要与非中国合作方互操作,SM2 并非合适的选择。大多数国际库、浏览器、云服务商和硬件安全模块(HSM)不原生支持 SM2,生态系统支持有限会带来互操作困难和集成成本。国际项目请使用 RSA-2048/4096 或标准 ECC(P-256/P-384)。若系统需同时服务中国和国际场景,建议采用分层架构——面向中国的组件使用 SM2,面向国际的组件使用标准算法。

推荐配置:
  • ✅ RSA-2048 或 RSA-4096(国际标准)
  • ✅ ECC P-256 / P-384(现代国际标准)
  • ❌ SM2 在中国生态系统之外支持极为有限
  • 💡 双区域系统:中国侧使用 SM2,国际侧使用 RSA/ECC

最佳实践建议

  • 仅在需要满足中国合规要求(《密码法》、人行规定、政府标准)时使用 SM2。纯国际系统使用 RSA 或标准 ECC,生态系统支持更完善。
  • 新实现始终使用 C1C3C2 格式。C1C2C3 仅用于与旧系统的向后兼容。
  • 私钥的保管与密码同等重要:加密存储、禁止日志记录、定期轮换。
  • 将 SM2(加密)与 SM3(哈希)和 SM4(对称加密)组合使用,构成大多数中国法规要求的完整商用密码套件。
  • 与集成方交换密钥或密文前,务必确认密钥编码格式(十六进制 vs PEM/DER,是否含「04」前缀)。

讨论与反馈

0 条评论