文章总结: 本文解析GB/T35275-2026标准下SM2签名验签中signedAttrs的编码处理。核心结论是验签时需将signedAttrs的A0标签改回31(SETOF类型),保持长度与内容不变,再进行DER编码与SM3摘要计算,即可与签名方摘要对齐。文档提供完整示例数据与十六进制字节码,具可操作性,适合密码学与安全开发人员参考。 综合评分: 82 文章分类: 安全开发,代码审计,安全工具
SM2签名消息摘要与A0转31总结
原创
利刃信安 利刃信安
利刃信安
2026年9月22日 15:00 北京
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
SM2签名消息摘要与A0转31总结
GB/T 35275-2026
属性 Attribute
也就是说,属性值可以是任意类型,但是属性值集合是SET OF(0x31)
signerInfo类型
若signerInfo中的signedAttrs存在,则待签名数据为signedAttrs的 DER 编码结果,并按照GB/T35276的规定进行数字签名运算。
signedAttrs SignedAttributes 是经由签名者签名的属性的集合
也就是说,要想使用DER编码(ASN.1)格式来表示signedAttrs,则需要变成属性值集合SET OF(0x31)
然而,我们平常看到某些数据,例如时间戳数据这里是A0表示。
A0 是字段包装,31 是值的类型;摘要计算的是”值”,不是”字段”。
完整数据验签链路:
定位 SignerInfo → 找到 signedAttrs → A0→31 → SM3 → SM2 验签
摘要计算用 31,是取 SignedAttributes 值的通用集合编码;存储里显示 A0,只是 IMPLICIT 把字段标签替换成了上下文特定的 [0]。
验签时把首字节从 0xA0 改回 0x31,长度与内容不动,再对这段字节做预处理,即可与签名方的摘要对齐。
示例数据
MIIFjgYKKoEcz1UGAQQCAqCCBX4wggV6AgEDMQ4wDAYIKoEcz1UBgxEFADCBgQYLKoZIhvcNAQkQAQSgcgRwMG4CAQEGDCsGAQQBga8IAQIDLTAwMAwGCCqBHM9VAYMRBQAEICLc0QN5x6bYNjYEFA/WWHXllSKVJqKqwZ56CQdUyiQ/AhAgIwQDEhUIFJCIMkRJlhaGGA8yMDIzMDQwMzA0MTUwOFoCBgGHRVNtdKCCAxcwggMTMIICtqADAgECAg8HAAIgIgMDAQAAACVSUlQwDAYIKoEcz1UBg3UFADBgMQswCQYDVQQGEwJDTjEyMDAGA1UECgwpR1VBTkcgRE9ORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkgQ08uLExURC4xHTAbBgNVBAMMFEdEQ0EgVHJ1c3RBVVRIIEUxIENBMB4XDTIyMDIyODE2MDAwMFoXDTI3MDIyODE2MDAwMFowSjELMAkGA1UEBhMCQ04xEjAQBgNVBAgMCeW5v+S4nOecgTESMBAGA1UEBwwJ5bm/5bee5biCMRMwEQYDVQQDDApUU1AgU2VydmVyMFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEERWU0MALy1/Nj3lIBbOGXh+j/pOrB78vuxD4sXLmegBwO1mfPSOA9CFHujMiYkwp6l/HInCrN2oF3yV35mUUiqOCAWUwggFhMB8GA1UdIwQYMBaAFBGP4/05GR2cGR9JN26sRIxV6hS9MB0GA1UdDgQWBBSomrphQ76fFNsouMm3ayc/2lnAnjBPBgNVHSAESDBGMEQGCiqBHIbvLwECAwEwNjA0BggrBgEFBQcCARYoaHR0cHM6Ly93d3cuZ2RjYS5jb20uY24vY3BzL2RvbWVzdGljLWNwczAPBgNVHRMBAf8EBTADAQEAMAsGA1UdDwQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vY3JsLmdkY2EuY29tLmNuL2NybC9HRENBX1RydXN0QVVUSF9FMV9DQS5jcmwwMwYIKwYBBQUHAQEEJzAlMCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5nZGNhLmNvbS5jbjAdBgUqVhUBAwQUDBIwMDcwMTIwMjIwMzAzNTM2NjUwDAYIKoEcz1UBg3UFAANJADBGAiEAxwHrd1hnWhfJwvfBbSr4ey8gKMfuvaXdtm2LoIk2Yh8CIQCGJ20j9lEm74QKE8HO1igLaonMEFppdmSWeS9gMJu5jDGCAcQwggHAAgEBMHMwYDELMAkGA1UEBhMCQ04xMjAwBgNVBAoMKUdVQU5HIERPTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZIENPLixMVEQuMR0wGwYDVQQDDBRHRENBIFRydXN0QVVUSCBFMSBDQQIPBwACICIDAwEAAAAlUlJUMAwGCCqBHM9VAYMRBQCggd4wGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMBwGCSqGSIb3DQEJBTEPFw0yMzA0MDMwNDE1MDhaMCwGCSqGSIb3DQEJNDEfMB0wDAYIKoEcz1UBgxEFAKENBgkqgRzPVQGCLQEFADAvBgkqhkiG9w0BCQQxIgQgl7E2g5qTE8kbXrmxd3WLj2hSJpGT8Vlb0YFiMhG3j44wQwYLKoZIhvcNAQkQAi8xNDAyMDAwLjAKBggqgRzPVQGDEQQgxhlH+gLUY5qyEeSVZDTvKJf2bHYS9ZeCTUfddGf6X3IwDQYJKoEcz1UBgi0BBQAESDBGAiEAjakaIcKiqtsZXE/Zc9TsviL3hSdNdK9PqTO41ty5k/4CIQCOu29qoDKrxv7BB1zKg3HJxSr1s8qZ3jEWY+bJLPbGIw==
SignerInfo 看下面即可
signedAttrs
A0 81 DE 30 1A 06 09 2A 86 48 86 F7 0D 01 09 03 31 0D 06 0B 2A 86 48 86 F7 0D 01 09 10 01 04 30 1C 06 09 2A 86 48 86 F7 0D 01 09 05 31 0F 17 0D 32 33 30 34 30 33 30 34 31 35 30 38 5A 30 2C 06 09 2A 86 48 86 F7 0D 01 09 34 31 1F 30 1D 30 0C 06 08 2A 81 1C CF 55 01 83 11 05 00 A1 0D 06 09 2A 81 1C CF 55 01 82 2D 01 05 00 30 2F 06 09 2A 86 48 86 F7 0D 01 09 04 31 22 04 20 97 B1 36 83 9A 93 13 C9 1B 5E B9 B1 77 75 8B 8F 68 52 26 91 93 F1 59 5B D1 81 62 32 11 B7 8F 8E 30 43 06 0B 2A 86 48 86 F7 0D 01 09 10 02 2F 31 34 30 32 30 30 30 2E 30 0A 06 08 2A 81 1C CF 55 01 83 11 04 20 C6 19 47 FA 02 D4 63 9A B2 11 E4 95 64 34 EF 28 97 F6 6C 76 12 F5 97 82 4D 47 DD 74 67 FA 5F 72
这里A0代表上下文CONTEXT_SPECIFIC [0]字段即:
Tag : 160 (0xA0) : CONTEXT_SPECIFIC [0]
验签过程中需要把A0改回31组DER数据
3181DE301A06092A864886F70D010903310D060B2A864886F70D0109100104301C06092A864886F70D010905310F170D3233303430333034313530385A302C06092A864886F70D010934311F301D300C06082A811CCF550183110500A10D06092A811CCF5501822D010500302F06092A864886F70D0109043122042097B136839A9313C91B5EB9B177758B8F6852269193F1595BD181623211B78F8E3043060B2A864886F70D010910022F313430323030302E300A06082A811CCF550183110420C61947FA02D4639AB211E4956434EF2897F66C7612F597824D47DD7467FA5F72
签名公钥和签名值不再赘述。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:利刃信安 利刃信安 利刃信安《SM2签名消息摘要与A0转31总结》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论