我的任务是制作一个程序,用双方的模数和公钥以及密文来破解 RSA 加密。我找到了用蛮力找到乘以模数的素数的解决方案。但是对于我必须使用的数字的大小,它似乎甚至无法完成处理。(模数为 30 位左右)
这是我们得到的示例数据:
{
"alice": {
"modulus": "66056083785421544972111685239",
"publicKey": "38933338385103628492607145193"
},
"bob": {
"modulus": "71994651332404115788173195239",
"publicKey": "28763302913765661132800185637"
},
"cipherText": "5b8sot9g2168mp3nw51"
}
Run Code Online (Sandbox Code Playgroud)
这是我目前正在尝试的解决方案,使用费马算法尝试更快地找到素数:
import java.math.BigInteger;
public class ferr
{
static BigInteger r1;
static BigInteger r2;
static BigInteger aliceModulus = new BigInteger("107182711767121947041078387099");
public static void main (){
System.out.println("running");
ferr x = new ferr();
x.fermat(aliceModulus);
}
public void fermat(BigInteger N)
{
BigInteger a = calcSQR(N);
BigInteger b2 = (a.multiply(a).subtract(N));
while(Square(b2) == false) {
a = a.add(BigInteger.valueOf(1));
b2 = (a.multiply(a).subtract(N));
} …Run Code Online (Sandbox Code Playgroud)