ECC:椭圆曲线密码
ECC是RSA的后继更短的密钥长度、更快的签名、更快的密钥协商。
密钥长度:
公钥0x41(65字节) 私钥0x20(32字节)
签名长度:
不定长。0x46-0x48。
签名格式: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字节长度。
SM2:国密即国家密码局认定的国产密码算法。该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。
旧标准的加密排序C1C2C3 新标准 C1C3C2,C1为65字节第1字节为压缩标识,这里固定为0x04,后面64字节为xy分量各32字节。C3为32字节。C2长度与原文一致。
密钥长度:
私钥0x20(32字节)
公钥0x41(65字节)
SM2非压缩公钥格式字节串长度为65字节,压缩格式长度为33字节,若公钥y坐标最后一位为0,则首字节为0x02,否则为0x03。非压缩格式公钥首字节为0x04。
SM2 公钥一般有两种表示方法:
X|Y,分开展示,公钥 X,公钥 Y
公钥加密:
SM2 加密数据将会产生三个值:
C1 为随机产生的公钥
C2 为密文,与明文长度等长
C3 为 SM3 算法对明文数计算得到消息摘要,长度固定为 256 位
签名数据:
SM2 加签之后产生的签名为(R,S),这一点与 RSA算法不同,RSA 算法加签之后签名就是一个值。
签名长度:64字节。
————————————————
版权声明:本文为CSDN博主「wxyuuu777」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_71405746/article/details/128253831