我需要 Diffie Hellman 协议来创建函数 XpowYmodN。我在网上找到了以下功能:
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。我很困惑,想要一些关于如何修复它的提示。谢谢你。