发布时间:2022-11-10 19:30
以太坊关键技术之一的椭圆曲线密码,几个核心的概念必须弄清楚了,才有可能更好的设计算法。
一、公匙、私匙
要产生公匙、私匙,有一种常用的方法:
1、首先要理解素数的概念:
素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
2、知道了素数的概念后,就要找两个大素数。
要找大素数的理由是,通过大素数产生的公匙、私匙不容易出现重复值。
3、所谓大素数,就是要找至少大于100的素数,即从素数101开始的素数,当然越大就越好,但算法的复杂度就更高。
4、随机产生两个大素数A、B,由此得到 C = (A-1) X (B-1) ;
5、找到一个整数D,使得C、D互为素数(就是C和D公约数只有1的意思),这个 D 就是公匙;
6、再找一个整数P,使得(PxD)除以C余1,那么 P 就是私匙;
二、椭圆曲线密码设计
1、椭圆上随机一点M,得到新公匙1: S10 = M x D;
2、再找 新私匙1: S11 = [(N*C)+1] / (M x D);(N是自然数)
3、新公匙2: S20 = M x (M x D);
4、新私匙2: S21 = [(N*C)+1] / [M x (M x D)];(N是自然数)
5、... ... 递归
三、椭圆曲线的密码的整数原理:
1、假设你考察的自然数的范围是: 1,2,3,...,n. 对应椭圆曲线上的外接圆上的 n 等份点,连接这些点到圆心的直线,经过椭圆的交点A、B、C、... 代表1,2,3,...,n
2、以上选到的椭圆曲线上的任意点到椭圆的两个焦点的距离之和总等于定长(椭圆定义)
3、随机选取椭圆曲线上的点,就是1,2,3,...,n
4、随机取得的椭圆上的任意三点,对应于外接圆上的三个点构成的三角形,均为钝角三角形的概率为 75%,任意随机取了一个点,那么下一个随机点,如果要保证在大概率范围内,就要取钝角三角形的另外两个点中的一个。
5、钝角三角形的三个顶点就是在椭圆的外接圆上的三个点。