関数 XpowYmodN を作成するには、Diffie Hellman プロトコルが必要です。次の関数をオンラインで見つけました。
public long XpowYmodN(long x, long y, long N) {
long result = 1;
final long oneShift63 = ((long) 1) << 63;
for (int i = 0; i < 64; y <<= 1, i++) {
result = result * result % N;
if ((y & oneShift63) != 0)
result = result * x % N;
}
return result;
}
この例の場合: XpowYmodN(29,83,53) 結果は 43 です。デバイス計算の製造元によると、結果は 50 になるはずです。間違っているところを教えてもらえますか? この例では、Math.pow(X,Y) % N を試してみましたが、結果は 28 になりました。ありがとうございました。