我正在尝试使用rsa算法解密ASCII值数组。到目前为止,这就是我所拥有的。
public void decryption3() {
double d1 = 6;
double d2 = 5;
double d3 = 4;
int key = 161;
for(int i = 0; i < three.length; i++){
BigInteger c1 = BigInteger.valueOf((long)(Math.pow(three[i],d1)%key));
BigInteger c2 = BigInteger.valueOf((long)(Math.pow(three[i],d2)%key));
BigInteger c3 = BigInteger.valueOf((long)(Math.pow(three[i],d3)%key));
BigInteger c4 = c1.pow(8);
BigInteger c5 = c3.pow(2);
BigInteger c6 = c4.multiply(c5.multiply(c2));
BigInteger c = c6.mod((BigInteger.valueOf(key)));
decryption3.add(c);
}
}
这正确地计算了值并输出了正确的引用,但我想知道是否有更简单的方法来计算M = C ^ d(mod 161)中的M. 我尝试了多种方式,但这是我找到工作的唯一方法。我知道除了将d分成多个计算之外,还有一种更简单的方法。有什么建议吗?