跳到主要内容

5.2.4 Point Addition (点加)

5.2.4 Point Addition (点加)

点加建议采用下述方法。点 (x,y) 用射影坐标 (projective coordinates) (X, Y, Z) 表示, 满足 x = X/Z, y = Y/Z。

中性点 (neutral point) 为 (0,1), 或在射影坐标中等价为对任意非零 Z 的 (0, Z, Z)。

下述公式用于在未扭曲 Edwards 曲线 (即 a=1) 且 d 为非平方 (non-square) 时计算两点之和 (x3,y3) = (x1,y1)+(x2,y2), 见 [Faster-ECC] 第 4 节与 [EFD-ADD]。它们是完备的 (complete), 即对任意一对有效输入点均成立。

                A = Z1*Z2
B = A^2
C = X1*X2
D = Y1*Y2
E = d*C*D
F = B-E
G = B+E
H = (X1+Y1)*(X2+Y2)
X3 = A*F*(H-C-D)
Y3 = A*G*(D-C)
Z3 = F*G

与其它曲线类似, 倍点公式可将相同点代入加法公式得到, 从而把四次乘法变成平方。然而这远非最优; [Faster-ECC] 第 4 节与 [EFD-DBL] 中的下述公式可省去多次乘法。

                B = (X1+Y1)^2
C = X1^2
D = Y1^2
E = C+D
H = Z1^2
J = E-2*H
X3 = (B-E)*J
Y3 = E*(C-D)
Z3 = E*J