研读了两篇文章,《什么是数字签名?区块链共识指的是啥?用物理学理解共识机制》,《一文读懂 ECDSA 算法如何保护数据》 基本上理解了ECDSA算法的公私钥生成,签名和验签的原理,这里按自己的理解整理如下:
私钥和公钥的关系
1、先在椭圆曲线上随便选一个点,叫G点 2、然后随机生成一个大整数,就是私钥Ka 3、公钥Pa就是Ka个G在曲线上相加得到,因此
签名的过程
1、假设alice的公私钥是Ka和Pa,需要验证的消息m 2、随机生成新的公私钥对,K和P 3、那么r就是P的x坐标值,记作
4、计算
输出(r,s)就是签名的结果
验签的过程
1、计算
2、计算
3、计算
由于在签名的第四步我们得到了
在公式的两边同时乘以
,可以得到:
因此第三步继续化简:
我们只需要验证这个计算出来的P的x坐标是否和r一样,就证明验签通过了