关于SM2算法结果的那些事

一、正常大家理解的SM2算法

1、SM2公钥 64个字节 : X + Y ,X和Y各32个字节

2、SM2私钥 32个字节 

3、SM2签名 64个字节: R+S,R和S各32个字节

4、SM2加密后密文:

C1 + C3 + C2,C1为X+Y 64个字节,C3为Hash 32个字节,C2为密文(长度与明文等长)

二、各类算法库的SM2算法

首先,理解什么是压缩和非压缩,即上面所说为非压缩,如下为压缩

1、针对SM2公钥,存在两种压缩形态

03 + X  或 02 + X ,总共33个字节,前缀03或02 取决于Y

为什么会出现压缩形态,因为SM2曲线方程式是确认的,即y^2=x^3+ax+b

a、b的值在标准SM2算法参数里面已知,因此给定x就能计算得到y

2、因为SM2公钥存在两种压缩形态,因为针对SM2加密后密文,也有两种压缩可能性,即

C1( 03 + X ) + C3(32个字节)+ C2 ,假定C2长度为16个字节,则该总长度为81个字节

C1( 02 + X ) + C3(32个字节)+ C2 ,假定C2长度为16个字节,则该总长度为81个字节

3、非压缩的公钥标准长什么样?

非压缩公钥正常形态为04 + X  + Y,由于各个算法库差异,04有时候会省略(64个字节或含04的65个字节),默认为非压缩(含04开头)。

非压缩密文正常形态为04 + C1 + C3 + C2 ,假定C2长度为16个字节,则该总长度为113个字节(含04开头)。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值