你能告诉我我是否正确吗?我想在p算法中生成DSA。我不要理解:|| pTemp.bitLength() != l语句中的do while,因为这意味着我只在寻找1数字素数,即2,5,7?废话

private BigInteger generateP(BigInteger q, int l) {
    if (l % 64 != 0) {
        throw new IllegalArgumentException("L value is wrong");
    }
    BigInteger pTemp;
    BigInteger pTemp2;
    int i = 0;
    do {
        //pTemp = new BigInteger(l, primeCenterie, rand);  <--- this is useless also?
        pTemp = new BigInteger(l,  rand);
        pTemp2 = pTemp.subtract(BigInteger.ONE);
        pTemp = pTemp.subtract(pTemp2.remainder(q));
        System.out.println("1 " + i++);
    } while (!pTemp.isProbablePrime(primeCenterie) || pTemp.bitLength() != l);

    return pTemp;
}

最佳答案

它不是1(一个),而是l(L),一切都还好。我在2个月前就做了,现在还不了解。

07-24 15:27