java bigint 最大值_java – 如何生成一个非常大的BigInt

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值