p = BigInteger.probablePrime(bitlength, random);
// Use Random number to find a generator
while (true) {
BigInteger pg = BigInteger.probablePrime(bitlength, random).mod(p);
if (!pg.equals(BigInteger.ONE)
&& !pg.modPow(BigInteger.valueOf(2), p).equals(
BigInteger.ONE)
&& !pg.modPow(
p.subtract(BigInteger.ONE).divide(
BigInteger.valueOf(2)), p).equals(
BigInteger.ONE)) {