椭圆曲线数字签名算法(ECDSA)

算法步骤

1.确定椭圆曲线

具体包括确定模数P;系数a和b;生成器点A,构造素数阶循环群q.

2.随机选取KPR值

随机选取整数d,且有0<d<q
KPR=d

3.计算公钥

B=dA
KPB=(P,A,B,q,A,B)

4.生成签名

1.选择临时密钥Ke,其中0<Ke<q  确保Ke的随机性。
2.R=Ke*A
3.利用点R的x坐标初始化变量r,即r=xR
4.签名formula:
S=(h(m)+dr)Ke^-1 mod q
其中m表示为消息或传输数据,h(m)为其的hash值

5.验证

1.w=s^-1 mod q
2.u1=w.h(m) mod q
3.u2=w.r mod q
4.计算点PP=u1*A+u2*B
5.如果点P的x坐标等同于签名参数r mod q ,则r,s视为有效签名
即XP= r mod q

6.操作

1.生成私钥:openssl ecparam -genkey -name secp256kl -noout -out privatekey.pem 

2.生成公钥:openssl ec -in privatekey.pem -pubout -out publickey.pem

3.生成签名:openssl dgst -ecdsa-with-SHA1 -sign privatekey.pem test.txt > sign.bin

4.验证:openssl dgst -ecdsa-with-SHA1 -verify publickey.pem -signature sign.bin test.txt

5.通过私钥生成证书:
openssl req -new -key privatekey.pem -x509 -nodes -days 111 -out certificate.pem

6.查看证书:
openssl x509 -in certificate.pem -text -noout
发布了10 篇原创文章 · 获赞 0 · 访问量 567

猜你喜欢

转载自blog.csdn.net/wweTHEUT/article/details/104238173
今日推荐