[原]Ed25519算法

版权声明:本文为博主原创文章,转载请注明来源!获取更新内容请关注我的开源项目:https://github.com/zcc0721/MasterBlockchain https://blog.csdn.net/u013137970/article/details/84573265

1 基础参数

Ed25519采用的曲线方程为 y2=x3+486662x2+xy^2 = x^3 + 486662x^2 + x

私钥长度:32字节。

公钥长度:32字节,无其它长度。

签名长度:64字节。

2 签名算法

2.1 生成密钥对

私钥:使用随机数发生器生成随机数 kk 作为私钥。

公钥生成过程:

  1. 计算私钥哈希值:H(k)=(h0,h1,...,h2b−1)\displaystyle \large H(k)=(h_{0},h_{1},…,h_{2b-1})
  2. 生成整数:a=2b−2+∑3⩽i⩽b−32ihi∈{2b−2,2b−2+8,...,2b−1−8}\displaystyle \large a=2^{b-2}+\sum_{3\leqslant i\leqslant b-3}2^ih_{i}\in \{2^{b-2},2^{b-2}+8,…,2^{b-1}-8\}
  3. 生成公钥:A=aB\displaystyle \large A=aB

在Ed25519中,bb固定取256。

AA 就是公钥。

2.2 生成签名

  1. r=H(hb,...,h2b−1,M)\displaystyle r=H(h_b,…,h_{2b-1},M)
  2. R=rB\displaystyle R=rB
  3. S=(r+H(R,A,M)a)mod l\displaystyle S=(r+H(R,A,M)a)mod \ l

则签名就是(R,S)(R,S)。

2.3 签名验证

只需要检验 8SB=8R+8H(R,A,M)A\displaystyle 8SB=8R+8H(R,A,M)A

2.4 签名验证原理分析

签名验证原理如下公式:

8SB=8(r+H(R,A,M)a)B=8rB+8H(R,A,M)aB=8R+8H(R,A,M)A\displaystyle \begin{aligned} 8SB &=8(r+H(R,A,M)a)B\\ &=8rB+8H(R,A,M)aB\\ &=8R+8H(R,A,M)A\\ \end{aligned}

3 参考资料

https://blog.csdn.net/u013137970/article/details/84573265

标签