图解SM2算法流程——第2章 签名验签

转载自:https://blog.csdn.net/samsho2/article/details/80770862

A.2 第2部分——数字签名算法
A.2.1 签名(User A)
l  签名者用户A的密钥对包括其私钥dA和公钥PA=[dA]G= (xA,yA)

l  签名者用户A具有长度为entlenA比特的可辨别标识IDA,

l  ENTLA是由整数entlenA转换而成的两个字节

l  ZA=H256(ENTLA || IDA || a || b || xG || yG|| xA || yA)。

l  待签名的消息为M,

l  数字签名(r,s)

说明:第5步若r=0或r+k=n则返回第3步;第6步若s=0则返回第3步。

 

A.2.2 验签(User B)
l  签名者用户A的密钥对包括其私钥dA和公钥PA=[dA]G= (xA,yA)

l  签名者用户A具有长度为entlenA比特的可辨别标识IDA,

l  ENTLA是由整数entlenA转换而成的两个字节

l  ZA=H256(ENTLA || IDA || a || b || xG || yG|| xA || yA)。

l  消息为M,数字签名(r,s)

 

A.2.3 原理
首先,验证流程B4计算的点(x′1; y′1) 和签名步骤A3 计算的点 ( x1, y1 )相等。

计算流程

(x′1; y′1)

= [s′]G + [t]PA

= [s′]G + [s′] PA + [r′] PA

= [s′]G +[s′][dA] G +[r′·dA] G

= [(1+ dA)×s′] G+[r′·dA] G

= [k − r · dA) ] G+[r′·dA] G

= [k] G

= ( x1, y1 )

其次,R= (e′ + x′1) mod n,r= ( e + x1 ) mod n,e′和e相等,x′1和x1相等,故正常情况下R= r′。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值