在java中为ElGamal算法寻找子组的生成器?

时间:2014-12-12 20:40:41

标签: java random cryptography rsa generator

我试图找到一个小于1024位的生成器。

p是一个随机的1024位素数。

q是一个随机的160位素数,它将p-1分开。


我已经找到了p和q的值。但是生成器总是最终为0或1。

非常感谢帮助。

BigInteger alpha=new BigInteger(1022,rand);//finding a biginteger smaller than 1024 bits

    BigInteger modInverseQ= q.modInverse(p); // (q^-1) mod(p)   
    BigInteger y = p.subtract(one);  //p-1
    BigInteger z = y.multiply(modInverseQ);  //(p-1)*(q^-1)
    BigInteger g = alpha.modPow(z, p);  // a^(p-1)*(q^-1) mod(p)

    int comp = g.compareTo(one);  // checking if generator is equal to 1

    while(comp == 0)    //if generator is 1 find a new generator
    {   
        alpha=new BigInteger(1022,rand);
        g = alpha.modPow(z, p); 
        comp = g.compareTo(one);

    }

1 个答案:

答案 0 :(得分:0)

您可以查看以下类的实现:org.bouncycastle.crypto.generators.DSAParametersGenerator

这是一类Bouncy Castle(https://www.bouncycastle.org/java.html),一个Java加密提供者。

在其中,有几种私有方法可能对您需要的内容非常有用。