SM2 (国密) 加密解密
免费在线 SM2 (国密) 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
结果将显示在这里...
输入 → 加密
使用指南
关于 SM2
SM2 是中国国家椭圆曲线密码(ECC)标准,规范编号 GM/T 0003-2012,由国家密码管理局(OSCCA)于 2010 年发布。SM2 基于 256 位椭圆曲线,采用自定义曲线参数,安全性等同于 RSA-3072,但密钥更短、运算更快。SM2 定义了三项功能:非对称加密、数字签名和密钥交换。本工具实现加密功能——用公钥加密、用私钥解密,与 RSA 的概念模型相同。
使用步骤
SM2 加密和解密操作步骤如下:
密文格式:C1C3C2 与 C1C2C3
SM2 密文由三个分量按特定顺序排列组成:
密钥格式
SM2 使用原始十六进制字符串作为密钥,而非 RSA 的 PEM 证书格式。了解密钥格式可避免常见的集成错误:
常见问题
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)。
使用场景
推荐:政务系统身份认证
推荐:金融机构交易加密
中国人民银行要求境内银行核心系统、支付平台和金融基础设施使用 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」前缀)。