为什么SM2算法签名结果不是64字节?
💡
原文中文,约800字,阅读约需2分钟。
📝
内容提要
SM2算法的签名长度通常为64字节,由R和S各32字节组成。密钥管理服务使用ASN.1编码,签名格式为SEQUENCE,包含R和S两个INTEGER。由于可能需要在首字节前补00,编码长度可能为70、71或72字节。ASN.1使用TLV格式,0x30和0x02表示SEQUENCE和INTEGER。
🎯
关键要点
- SM2算法的签名长度为64字节,由R和S各32字节组成。
- 密钥管理服务使用ASN.1编码签名结果。
- SM2算法签名数据格式的ASN.1定义为SEQUENCE,包含R和S两个INTEGER。
- 在大数INTEGER做DER编码时,首字节为1时需补00,导致编码长度可能增加。
- 编码长度可能为70、71或72字节,具体取决于R和S的补位情况。
- 特殊场景下,编码长度可能为69字节,取决于前导0的处理。
- ASN.1使用TLV格式存储数据,0x30和0x02分别表示SEQUENCE和INTEGER。
- 0x44、0x45、0x46表示SEQUENCE的长度,分别对应70、71和72字节。
- 0x20表示INTEGER的长度,对应32字节。
➡️