密碼學/素數曲線/標準射影座標
外觀
< 密碼學
<密碼學
標準射影座標 用於表示素數曲線 y^2 = x^3 + ax + b 上的橢圓曲線點。當域反轉的成本明顯高於域乘法時,使用它們可能會比仿射座標 速度更快。在標準射影座標 中,三元組 (X, Y, Z) 表示仿射點 (X / Z, Y / Z)。
令 (X, Y, Z) 是一個點 (不等於無窮遠點) 以標準射影座標 表示。那麼它的倍點 (X', Y', Z') 可以透過以下方式計算
if (Y == 0) return POINT_AT_INFINITY W = a*Z^2 + 3*X^2 S = Y*Z B = X*Y*S H = W^2 - 8*B X' = 2*H*S Y' = W*(4*B - H) - 8*Y^2*S^2 Z' = 8*S^3 return (X', Y', Z')
注意:如果 a = -3,那麼 W 也可以計算為 W = 3*(X + Z)*(X - Z),節省了 2 個域平方運算。
令 (X1, Y1, Z1) 和 (X2, Y2, Z2) 是兩個點 (都不等於無窮遠點) 以標準射影座標 表示。那麼它們的和 (X3, Y3, Z3) 可以透過以下方式計算
U1 = Y2*Z1
U2 = Y1*Z2
V1 = X2*Z1
V2 = X1*Z2
if (V1 == V2)
if (U1 != U2)
return POINT_AT_INFINITY
else
return POINT_DOUBLE(X1, Y1, Z1)
U = U1 - U2
V = V1 - V2
W = Z1*Z2
A = U^2*W - V^3 - 2*V^2*V2
X3 = V*A
Y3 = U*(V^2*V2 - A) - V^3*U2
Z3 = V^3*W
return (X3, Y3, Z3)
令 (X1, Y1, Z1) 是一個點以標準射影座標 表示,(X2, Y2) 是一個點以仿射座標 表示 (都不等於無窮遠點)。透過將“Z2”的每次出現替換為“1”(從而減少三個域乘法),可以很容易地從常規標準射影點加法推匯出新增這些點的公式。