首页/安全/加密与证书速查/SM2 公钥加密与 C1C2C3 结构
加密算法基础95 条

SM2 公钥加密与 C1C2C3 结构

SM2 加密输出由 C1(曲线点)、C2(密文)与 C3(SM3 摘要)组成;不同标准版本与实现的拼接顺序不同,是国密对接中的常见故障点。

加密与证书速查安全更新于 2026-10-12
C1随机点 kG(椭圆曲线点)
C2与 KDF 密钥流异或后的密文
C3SM3(x2 || M || y2) 摘要
顺序差异C1C2C3 与 C1C3C2 两种拼接在生态中并存

加密流程要点

加密流程要点
1) 随机 k,计算 C1 = kG
2) 计算共享点 S = kP,用 KDF 派生密钥流 t
3) C2 = M 异或 t
4) C3 = SM3(x2 || M || y2)
5) 按对端约定顺序拼接输出
跨系统对接先确认 C1/C2/C3 的拼接顺序与是否使用 ASN.1 封装,顺序不一致时表现为「解密结果乱码或校验失败」。

易错点

  • 顺序问题排查困难(密文看起来都「是乱码」),建议对接时先跑标准测试向量
  • SM2 加密同样只适合小数据,大文件按混合加密思路先协商对称密钥

数据来源与参考

  • GB/T 32918.4-2016(SM2 公钥加密算法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌