ECC算法

ECC算法基于一条椭圆曲线。曲线是一个多项式的图形表达。多项式就有常量。那么常量就是曲线的部分参数。

随便在曲线上找两个点A,B,A+B就是A和B两点连线与曲线的交叉点。如果A和B是同一个点,那连线就变成了切线。
这就是一个简单的乘法:选一个点G,再选一个倍数k,就可以算出一个结果K=kG。
其中K就是公钥,曲线上的一个点;k就是私钥,一个倍数;G是ECC算法的一个参数,对于一个选定的曲线算法固定。

公钥作为一个点,就有坐标,x和y。对于ECC 256来说,x和y都是32个字节。任选点私钥k也选32个字节。

由于曲线对应的多项式是固定的,因此,知道x可以直接算出y。所以公钥的表达方式可以是(x,y),也可以压缩为x+标志。有x就可以根据多项式算出两个y,根据标志选出其中一个y就得到了公钥。因此公钥是可以压缩的。压缩后的公钥实际上就是256比特的x和1个比特的标志,共257个比特,表达成字节长度就是33个字节。

你可能感兴趣的:(ECC算法)