jacobian
避免逆运算过于难算将仿射坐标转化为雅可比坐标
定义
对一个椭圆曲线:$y^2≡x^3+ax+b \mod p$
将坐标(x,y)等价表示为:$(X,Y,Z)$
$x = \frac{X}{Z^2} \ y = \frac{Y}{Z^3}$
代入原方程得:
$$ Y^2≡X^3+aXZ^4+bZ^6 \mod p $$点加法(P≠Q)
仿射坐标下:
$$ \left\{ \begin{aligned} \lambda &= \frac{y_2 - y_1}{x_2 - x_1} \\ x_3 &= \lambda^2 - x_1 - x_2 \\ y_3 &= \lambda(x_1 - x_3) - y_1 \end{aligned} \right. $$$x_1 = \frac{X_1}{Z^2_1} \ y_1 = \frac{Y_1}{Z^3_1}$
$x_2 = \frac{X_2}{Z^2_2} \ y_2 = \frac{Y_2}{Z^3_2}$
令$U_1=X_1Z_2^2,U_2=X_2Z_1^2$
$S_1=Y_1Z_2^3,S_2=Y_2Z_1^3$
$令H=U_2-U_1$
$R=S_2-S_1$
所以
$$ \lambda =\frac{R}{H} \frac{1}{Z_1Z_2} $$$$ x_3 = \frac{R^2-H^2Z_2^2X_1-H^2Z_1^2X_2}{H^2Z_1^2Z_2^2}\\ 所以x_3=\frac{R^2-H^2(U_2+U_1)}{H^2Z_1^2Z_2^2}\\ 因为H=U_2-U_1,所以U_1+U_2=2U_1+H\\ x_3=\frac{R^2-2U_1H^2-H^3}{H^2Z_1^2Z_2^2} 所以按照x=\frac{X}{Z^2},令z_3=HZ_1Z_2\\ X_3=R^2-2U_1H^2-H^3\\ Y_3可以同样化简为:Y_3=R(U_1H^2-X_3)-S_1H^3 $$得到$(X_3,Y_3,Z_3)$
然后得到$(x_3,y_3)$
点倍加(P=Q)
若P=Q时,切线代替割线:
$$ λ=\frac{3x_1^2+a}{2y_1} \mod p $$$$ x_3=λ^2-2x_1 \mod p\\ y_3=λ(x_1-x_3)-y_1 $$$$ x_1=\frac{X_1}{Z_1^2},y_1=\frac{Y_1}{Z_1^3} $$则:
$$ \lambda=\frac{3X_1^2+aZ_1^4}{2Y_1Z_1} $$令:
$$ M=3X_1^2+aZ_1^4 $$$$ S=4X_1Y_1^2 $$由:
$$ x_3=\lambda^2-2x_1 $$得到:
$$ x_3=\frac{M^2-2S}{4Y_1^2Z_1^2} $$因此令:
$$ Z_3=2Y_1Z_1 $$得到:
$$ X_3=M^2-2S $$再由:
$$ y_3=\lambda(x_1-x_3)-y_1 $$得到:
$$ Y_3=M(S-X_3)-8Y_1^4 $$因此:
$$ 2P=(X_3,Y_3,Z_3) $$其中:
$$ X_3=M^2-2S \\ Y_3=M(S-X_3)-8Y_1^4 \\ Z_3=2Y_1Z_1 $$最后恢复仿射坐标:
$$ x_3=\frac{X_3}{Z_3^2},y_3=\frac{Y_3}{Z_3^3} $$