济南企业营销型网站建设,网站建设的需求方案,网站负责人幕布照片,电子商务等于做网站吗文章目录6. 签名流程7. 验签流程实现参考资料6. 签名流程
M’ ZA || Msge Hash(M’)#xff0c;并转为大数#xff1b;生成随机数k#xff0c;范围0kn#xff1b;计算kG (x1, y1)r (e x1) mod n, 若r0或(rkn)则重新生成k#xff1b;s (k-rd) / (1d) mod n ZA || Msge Hash(M’)并转为大数生成随机数k范围0kn计算kG (x1, y1)r (e x1) mod n, 若r0或(rkn)则重新生成ks (k-rd) / (1d) mod n若s0则重新生成k返回签名(r, s)
ZA关于用户A的可辨别标识、部分椭圆曲线系统参数和用户A公钥的杂凑值。
7. 验签流程
检查r, s范围0 nM’ ZA || Msge Hash(M’), 并转为大数t (r s) mod n若t0则验证不通过(x1, y1) sG tQ计算R (e x1) mod n r是否成立成立则验签通过。
推导
sG tQ((k-rd) / (1d)) G (r s) dG((k-rd) / (1d)) G ( ((rrd) (k-rd))/(d1) ) dG((k-rd) / (1d)) G ( (r k)/(d1) ) dG((k-rd) / (1d)) G ( (dr dk)/(d1) ) G(kdk) / (1d)) GkG(x1, y1)整个流程其实和ecdsa相似区别在于
消息前追加发送者的标识r和s的计算有点差异。
实现
https://github.com/C0deStarr/CryptoImp/tree/main/pubkey/ecc
sm2.gsm2.c
实现时有一个坑s的符号大概率是负的但big_to_bytes接口并不会存储符号需要手动记录。
参考资料
国家密码管理局关于发布《SM2椭圆曲线公钥密码算法》公告国密局公告第21号_国家密码管理局 (sca.gov.cn)