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

Iris ·
更新时间:2024-11-13
· 625 次阅读

算法步骤 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.计算点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
作者:wweTHEUT



椭圆曲线 数字签名 算法 椭圆

需要 登录 后方可回复, 如果你还没有账号请 注册新账号