5.1.1 Modular Arithmetic (剰余演算)
5.1.1 Modular Arithmetic (剰余演算)
p = 2^255 - 19 に関する算術を効率的かつ安全に実装する方法は, Curve25519 [CURVE25519] を参照のこと. p を法とする逆元については, 恒等式 x^-1 = x^(p-2) (mod p) の利用を推奨する. 零の逆元は決して起こらないはずであり, 無効な入力 (以前に検出されている) か計算誤りが必要になる.
点の decoding (復号) または "decompression (圧縮解除)" には, p を法とする平方根が必要である. Tonelli-Shanks アルゴリズム, または p = 5 (mod 8) の特別な場合で計算できる. a の平方根を求めるには, まず候補根 x = a^((p+3)/8) (mod p) を計算する. 次に三つの場合がある:
-
x^2 = a (mod p). このとき x は平方根である.
-
x^2 = -a (mod p). このとき 2^((p-1)/4) * x は平方根である.
-
a は法 p の下で平方でない.