"); //-->
30 46 02 21 00 B8 BC E6 7F 6F 98 36 37 D7 AD 24 C0 68 FC A7 33 9B 7F 8D 83 C1 B4 66 63 27 AE 82 7C 66 09 CF 5F 02 21 00 EC F4 13 35 FC 9B 0E 8D 18 1A 9F 6E 5F 6A DC 70 4B D2 92 0C 43 F6 48 B6 79 9E C2 50 15 50 8B 69
之前进行ECC的签名验证,发现签名的长度总是不同,查了不少资料才找到相应格式。
签名格式为TLV嵌套格式,签名的主体分为R和S两部分。R(或S)的长度等于ECC私钥长度。R(或S)前的T为0x02,签名T为0x30。总体格式如下:
30 + LEN1 + 02 + LEN2 + 00 (optional) + r + 02 + LEN3 + 00(optional) + s
当r或s的第1字节大于0x80时,需要在r或s前加1字节0x00。
LEN3为,0x00(optional) + s 的字节长度。
LEN2为,0x00(optional) + r 的字节长度。
LEN1为,LEN2+LEN3+4字节长度。
示例使用ECC密钥的长度为128bit,即16字节。
示例1:
R:
“55C963A8DF3E04D0065BD95AA97AE758F1A550683238978500ED8A77C0BBA438”
S:
“A7ED11F41861833CAC4FBD0CD6F2AF7E682512EA4135F66315F52D76E651CD2D”
Sign:
“3044”+ “0220” + “2025FB2BFE02547D366274D3EE5DB985FE278343D985D195A710D6D6C5F62770” + “0220” + “2ADA9ED4260F0686D098016ACC29369A55760222A071DE2E3A9A739EC0A1E4D4”
示例2:
R:
“55C963A8DF3E04D0065BD95AA97AE758F1A550683238978500ED8A77C0BBA438”
S:
“A7ED11F41861833CAC4FBD0CD6F2AF7E682512EA4135F66315F52D76E651CD2D”
Sign:
“3045” + “0220” + “55C963A8DF3E04D0065BD95AA97AE758F1A550683238978500ED8A77C0BBA438” + “0221” + “00” + “A7ED11F41861833CAC4FBD0CD6F2AF7E682512EA4135F66315F52D76E651CD2D”
示例3:
R:
“B66E81C0C6E0981CF24F4785A7DC853562D025EDB7407247FD7D29BDA4CFD9BF”
S:
“FA53841387568477283FF104952599582E24BB5EDA7B3318B8AC3661D63E29F3”
Sign:
“3046” + “0221” + “00” + “B66E81C0C6E0981CF24F4785A7DC853562D025EDB7407247FD7D29BDA4CFD9BF” + “0221” + “00” + “FA53841387568477283FF104952599582E24BB5EDA7B3318B8AC3661D63E29F3”
————————————————
原文链接:https://blog.csdn.net/daihuimaozideren/article/details/81072738
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。