本文章是对 https://zhuanlan.zhihu.com/p/529733453 的总结,完整版可看该链接
什么是椭圆曲线
利用高中几何二维坐标系知识:
图像大致这样
椭圆曲线运算法则
定义加法:过两点做直线,该直线与椭圆曲线相交的第三点,则这三点加起来为0
负数:关于x轴对称
乘法:多个自己相加,A+A,即经过A点的切线
减法:加上一个负数
0点,A+(-A)与椭圆曲线的交点,即无穷远,没有交点
ECC加密过程
Alice先定义公私钥:选取椭圆曲线(a,b),取一个基点P,私钥K,计算Q=K*P,Q即是公钥
Alice加密明文M:取一个随机数r,明文C=(rP,M+rQ)
Alice解密密文C:M = M+rQ - k*(rP) = M + rQ - rQ = M
有限域上的椭圆曲线
有限域,即取模
已知两点A(x1,y1),B(x2,y2),求A+B(x3,y3)的公式:
k是斜率,A=B的时候是椭圆曲线的切线,即求导
x3,y3公式由联立 直线方程和椭圆曲线方程 解出,可以自行推到证明,证明过程链接:
https://blog.csdn.net/Carrot_kexin/article/details/120676750
取模后椭圆曲线图像如下
分数取模
0.5 % 23 == k
2k % 23 == 1
2k == 24
k == 12
所以 0.5 % 23 == 12