使用 BigInteger 的 Rsa 实现不适用于大数字

Rsa implementation with BigInteger doesn't work for big numbers

我正在尝试使用 BigInteger 获得一个简单的 RSA encryption/decryption。它适用于较小的数字,但不适用于较大的数字:

BigInteger messageToInt = 111098; 
BigInteger enc = BigInteger.ModPow(messageToInt, publicKey, n);
BigInteger dec = BigInteger.ModPow(enc, privateKey, n); // should be same as messageToInt
Console.WriteLine(dec);

密钥来自 Wiki 示例 - privateKey = 413publicKey = 17n = 3233

实际上,它工作 完美:

15000 mod 3233 = 2068.

由于 RSA 依赖于模运算,因此您只能使用小于 n 的纯文本。无法区分明文是20682068 + n2068 + 2n

这里的解决方案是将纯文本拆分成小于 n 的部分,或者增加 n 直到纯文本适合那里。