如何生成一个非常大的BigInt

时间:2014-04-01 12:16:47

标签: java rsa biginteger bigint

我想实现RSA,为此我需要生成egcd(e, ø(n)) = 1 and 1 < e < ø(n)应该是ø(n),并且其大小应该与 // generate random p,q,r on 512 bits p = new BigInteger(512, 15, new Random()); q = new BigInteger(512, 15, new Random()); r = new BigInteger(512, 15, new Random()); // calculate n = p*q*r n = p.multiply(q); n = n.multiply(r); //calculate ø(n) = (p - 1)*(q - 1)*(r - 1) ø_n = p.subtract(BigInteger.valueOf(1)); ø_n = ø_n.multiply(q.subtract(BigInteger.ONE)); ø_n = ø_n.multiply(r.subtract(BigInteger.ONE)); do { e = new BigInteger(2 * 512, new Random()); } while //while e >= ø_n ((e.compareTo(ø_n) >= 0) || //while gcd(e, ø(n)) != 1 (e.gcd(ø_n).compareTo(BigInteger.ONE) != 0)); 非常接近。我的阿尔格。下面是前两个步骤,但生成的数字非常小。如何生成更大的?

while

检查{{1}}循环,其他一切只是初始化。

1 个答案:

答案 0 :(得分:1)

考虑将BigInteger.probablePrime()SecureRandom一起使用。