gpt4 book ai didi

java - 如何生成一个非常大的 BigInt

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:18 26 4
gpt4 key购买 nike

我想实现 RSA,为此我需要生成 e应该是 gcd(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循环,其他一切都只是初始化。

最佳答案

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

关于java - 如何生成一个非常大的 BigInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22785662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com