首页/安全/加密与证书速查/SM2 签名流程与 ZA 值
加密算法基础95 条

SM2 签名流程与 ZA 值

SM2 签名在标准哈希过程中引入 ZA(用户标识与公钥的杂凑值),再对消息摘要签名;用户标识默认值为 1234567812345678,双端不一致会导致验签失败。

加密与证书速查安全更新于 2026-10-12
ZA 组成ENTL || IDA || a || b || xG || yG || xA || yA 的 SM3 杂凑
默认用户标识1234567812345678
签名输出(r, s)
配套摘要SM3

签名与验签

签名与验签
openssl dgst -sm3 -sign sm2.key -out sig.bin data.bin
openssl dgst -sm3 -verify sm2.pub -signature sig.bin data.bin
openssl pkeyutl -verify -pubin -inkey sm2.pub -rawin -in data.bin -sigfile sig.bin
使用非默认用户标识(如企业统一标识)时,签名与验签双方必须显式配置相同 IDA,否则结果只表现为验签失败。

易错点

  • 把 SM2 签名当作「ECDSA 换曲线」实现会漏掉 ZA 计算,导致与标准实现不互通
  • 签名证书与加密证书用途分离,签验签只用签名证书对应密钥

数据来源与参考

  • GB/T 32918.2-2016(SM2 数字签名算法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌