具体包括确定模数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.计算点P,P=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