java 模幂运算_关于rsa:使用Euler的totient和中文余数定理在Java中进行模幂运算

编辑-已澄清

我正在尝试使用lagrange和中文余数定理在Java中实现模幂运算。

例如,如果N是55,并且给定了素数5和11,phi是40,那么我知道在55以下,有40个数字互质为N。 ,以5和11为模的几次乘法以及CRT来结合两个结果"

我的问题是如何计算这些数字?我需要将它们放入中国余数定理中以完成计算,但是我想不出一个巧妙的方法来使用phi(n)在N中循环。 N将是一个非常大的数字,至少1024位。我可能在这里走错了路,我是否还需要所有这些素数?

我确实怀疑答案是否与扩展的euclid函数有关,我已经对其进行了编码,因此如果我需要使用它的结果就可以了。

我不明白N以下有多少个数互质为N?因此对我没有太大帮助,我看的数学论文很难理解,总和和乘积类型表示法令我有些困惑。另外,某些答案使用平方根和对数,而BigInteger并不是真正的选择(如果我输入错了,请纠正我)

谁能用简单的英语给我答案?

可以给我看代码,这更多的是学习练习,因为我要提交的答案使用蒙哥马利。 (是的,我知道,很奇怪我可以从数学公式中得出蒙哥马利,但这种拉格朗日加CRT令我完全困惑)

到目前为止,我已经通过一个示例找到了解决方法。质因子是7和5,所以phi 35是24(我有一个正常的Euler上位函数)。

因此,对于N = 55,您需要一种算法,该算法枚举[0..55)范围内某处的40个整数。 对?

是的,但也可能是表示它们是素数的一种方式,我的意思是55没有40素数,因此我不确定phi函数的使用方式。

55具有40个互质数,这是不同的。 要计算所有与N互质的数,只需对[1..N]遍历Euclid GCD算法即可。 如果结果为GDD(a,N)== 1,则a,N为互质

抱歉,我只是对其进行编辑以使其更加清晰。

请参阅此答案以获取解决的示例。 它确切地展示了如何通过对素因子进行模运算并组合结果来对复合模进行模幂运算。

要找到所有与N互质的数字,只需对[1,N]遍历euclid GCD()算法即可。 如果GCD(a,N)== 1,则a,N是互质的

我知道如何计算。 在上面的示例中,phi 55是40。但是如何使用40 phi来创建中国余数定理所需的素因子全等式。

您不需要CRT来找到所有的互质数!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值