椭圆曲线签名验证算法

来自

http://www.8btc.com/btc_ecc_dsa_a

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

用户的密钥对:(d, Q);(d为私钥,Q为公钥)
待签名的信息:M;
签名:Signature(M) = ( r, s)

签名过程:

1、根据ECC算法随机生成一个密钥对(k, R), R=(xR, yR)
2、令 r = xR mod n,如果r = 0,则返回步骤1
3、计算 H = Hash(M)
4、按照数据类型转换规则,将H转化为一个big endian的整数e
5、s = k^-1 (e + rd) mod n,若s = 0, 则返回步骤1
6、输出的S =(r,s)即为签名。

验证过程:

1、 计算 H = Hash(M)
2、按照数据类型转换规则,将H转化为一个big endian的整数e
3、计算 u1 = es^-1 mod n, u2 = rs^-1 mod n
4、计算 R = (xR, yR) = u1G + u2Q, 如果R = 零点,则验证该签名无效
5、令 v = xR mod n
6、若 v == r,则签名有效,若 v ≠ r, 则签名无效。

猜你喜欢

转载自blog.csdn.net/qq_34352738/article/details/79329972