그래서 그들은이 더 많거나 일의 대기업에게 덜 나는에 발견이다아무런 반응이 없습니다 [BigInteger를]
import java.util.*;
import java.math.*;
public class GeneratePrime{
public static BigInteger calculatePPrime() {
BigInteger pRandom;
while (true) {
pRandom = new BigInteger(512, new Random());
pRandom = pRandom.setBit(0);
if(isPrime(pRandom)){
System.out.println("Got Random Prime P: "+pRandom);
break;
}
}
return pRandom;
}
public static BigInteger calculateQPrime() {
BigInteger qRandom;
while(true){
qRandom = new BigInteger(512, new Random());
if(isPrime(qRandom)){
System.out.println("Got Random Prime Q: "+qRandom);
break;
}
}
return qRandom;
}
public static boolean isPrime(BigInteger number) {
if (!number.isProbablePrime(5))
return false;
BigInteger two = new BigInteger("2");
if (!two.equals(number) && BigInteger.ZERO.equals(number.mod(two)))
return false;
for (BigInteger i = new BigInteger("3"); i.multiply(i).compareTo(number) < 1; i = i.add(two)) {
if (BigInteger.ZERO.equals(number.mod(i)))
return false;
}
return true;
}
}
소수 인 경우 두 개의 소수를 계산하고 클래스가 확인해야 인터넷. 이 클래스는 원래 BigIntegers를 사용하지 않았지만 할당을 위해 사용해야한다는 것을 알았습니다. 그래서 모든 것을 긁어 내야했습니다.
어쨌든. 나는 primes를 계산하기 위해 내장 함수를 사용할 수 없다 (idk가 있다면 그것도있다).
import java.util.*;
import java.math.*;
public class RSA{
public static void main(String[] args) {
BigInteger p, q;
GeneratePrime gp = new GeneratePrime();
p = gp.calculatePPrime();
q = gp.calculateQPrime();
}
}
두 클래스가 잘 컴파일,하지만 난 RSA 클래스를 실행할 때 다음, 아무 일도 발생하지 : 여기 내 문제는 내가이 코드를 실행하면 때문이다. 아무런 오류가 없습니다. 내 터미널은 그냥 비어 있습니다. 아무도 이유를 아나요? 아니면이 코드가 컴퓨터에서 작동하는지 누구라도 알 수 있습니까? 내가 아마 여기 무언가를 놓친 걸 알고있다. 감사합니다
대개 프로그램이 소수를 검색하는 중 일 것입니다. –
관련이 없지만이 방법으로 코드를 복제하지 마십시오. 'calculatePPrime()'과'calculateQPrime()'대신에 하나의'calculatePrime()'만 있으면됩니다. –
아마도 생성하는 난수가 매우 커서 (512 비트, 약 십진수 154), 계산 시간이 오래 걸릴 수 있습니다. 컴퓨터는 빠르지 만 너무 빨라서 몇 초 안에 아무 것도 할 수 없습니다 ... – Jesper