[多素数RSA]利用phi(n)分解n

利用phi(n)分解n的方法

本文以n=pq为例,实际上这种方法可以使用到多素数的RSA系统。

假设我们已经知道\phi(n)的整数倍,记为b,其中b=k\phi(n),那么根据欧拉定理,任意一个与n互素的a,都满足:

                                ​​​​​​​                a^{b} \equiv a^{k\phi(n)} \equiv 1 \mod(n)

由于b是偶数,所以把b中的素因子2全部提出,那b就可以写成:

                                                b = 2^ts

其中s为奇数。

所以:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        a^{2^ts} \equiv 1 \mod(n)

所以:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                n \mid a^{2^ts}-1

也就是说a^{2^ts}-1中同时含有p,q,这对我们分解n没有帮助,但是这里我们发现被除数可以因式分解,由平方差公式得:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        a^{2^ts}-1 = (a^{2^{t-1}s}+1)(a^{2^{t-1}s}-1)

通过这样分解,就有可能把p和q分开到两个式子中,如果确实分开了,就可以利用gcd(n,a^{2^{t-1}s}+1 )gcd(n,a^{2^{t-1}s}-1 )求出n的素因子,那如果p和q没有分开的话,我们就可以接着分解:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        a^{2^ts}-1 = (a^{2^{t-1}s}+1)(a^{2^{t-2}s}+1)(a^{2^{t-2}s}-1)

就这样一直套用平方差公式,可得:

        ​​​​​​​        a^{2^ts}-1 = (a^{2^{t-1}s}+1)(a^{2^{t-2}s}+1)\cdot \cdot \cdot (a^{2s}+1)(a^{s}+1)(a^{s}-1)

然后我们去尝试每一个因式,看看能不能把p和q分解出来,如果每个因式都失败了,也没关系,因为这里a是任选的,所以我们只需要换一个a继续重复上述步骤就行。

END

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值