我无法解码自己的 RSA 消息!(使用爪哇)



所以我想使用RSA加密来为我加密一些信息,但有时完成后我无法解码。这是我的代码:

import java.math.BigInteger;
public class rsa_practice {
public static void main(String[] args) {
BigInteger p = new BigInteger("61");
BigInteger q = new BigInteger("53");
BigInteger e = new BigInteger("17");
BigInteger n = p.multiply(q);
BigInteger phi = p.subtract(new BigInteger("1")).multiply(q.subtract(new BigInteger("1")));
BigInteger m = new BigInteger("22");    //24390, 1758
BigInteger d = e.modInverse(phi);
BigInteger c = m.modPow(e, n);
BigInteger mAGAIN = c.modPow(d, n);
System.out.println("" + c);
System.out.println("" + mAGAIN);
}
}

m应该总是等于mAGAIN,但出于某种原因,我并不总是这样。例如,如果m是22或1758,mAGAIN是22或175。然而,如果m是24390,那么由于某种原因mAGAIN是1759。我不明白为什么加密和解密m后会改变它的值。如有任何反馈或建议,我们将不胜感激!

这是因为24390大于n(=3233(。事实上24390%323=1759,所以你的算法一切正常。

RSA仅在m<n.

最新更新