RSA加密算法数学推导

参考博客:
https://blog.csdn.net/qq_25847123/article/details/103141321


RSA算法取名于三位开发者姓名的首字母,作为最出名的公钥加密算法,其形式非常简洁,构造非常简单。

但是初学者可能会出现一些疑问,我在初学时的两个疑问最近又学了一遍才完全理解。


我们先看一下RSA的具体构造过程:

1、选择两个大质数 p,q,两个数的数量级大概是 2 的几百次方,计算模数 n=pq
2、计算 L=(p1)(q1);(有的版本是 lcm(p1,q1),两个版本都对,先按前一个)
3、找到小于 Lgcd(e,L)=1 的数 e ,数对 e,n 作为公钥;
4、求模 L 意义下 e 的逆元 d ,数对 d,n 作为私钥。

RSA对原数据的要求:消息 m 的取值范围是 (0,n),注意到是开区间,大于等于 n 在模 n 后无法恢复原消息,因此位数较多的消息会按 n 的位数进行分块。m 也不能取 0,否则得到的密文也为 0

RSA的核心在于 medmkL+1m(modn),那么就要求 mkL+1m(modn),网上一个普遍的解释是依据欧拉定理,mφ(n)1(modn),而此时的 L 就是 φ(n) ,因此 mkL1(modn)

那么,我们的第一个疑问就来了,我们前面所说的 m 取值范围是小于 n 的正整数,没说必须和 p,q 互质,但是欧拉定理的使用条件是 mn,当 mn 有公因子 p 时( q 同理),取模的结果肯定也是 p 的倍数,怎么可能是 1 呢。

所以我们要在数论上推导RSA的正确性时,也要把 m⊥̸n 的情况拓展进来。

我们设 m=kp (q 等价);
此时 mq 互质,可以使用欧拉定理,mq11(modq)
mq1=hq+1
那么 m(p1)(q1)+1=(hq+1)p1m
考虑在模 n 意义下,m(p1)(q1)+1(hq+1)p1mm(modn)
最后一步是怎么消掉的,因为 (hq+1)p1 展开后,除了最后一项是 1 ,其他项都有 q ,那么 mq 相乘是 n 的倍数,取模完就只剩下 1 乘以 m 了。

所以RSA的核心并不是 mkL1(modn),而是 mkL+1m(modn),后者是更普遍的性质,可以容许 m⊥̸n

但是还是有一点需要保证,就是 m 只能和 n 有一个共同的质因子,比如 m=10n=25 就不满足上式。在RSA中,n 只有两个质因子,m 小于 n ,最多和 n 共享一个质因子,因此一定满足上式。

另一个疑问就是为什么网上有的版本是 L=lcm(p1,q1),这样就不能用欧拉定理的 mφ(n)+1m(modn) 来解释了,但是由于 pq 是互质的这一特殊性,mkL+1m(modn) 仍然是成立的,推导方式和上面类似。

首先是 mn ,设 L=s(q1)=t(p1);
mp11(modp);
mq11(modq);
(mp1)tmL1(modp)
(mq1)smL1(modq)
mL 在模 pq 意义下都是 1 ,由中国剩余定理可得 mL1(modn)

然后是 m⊥̸n,这个情况下,其实和 L=(p1)(q1) 差不多;
我们得到了 mq1=hq+1;
ms(q1)+1mL(hq+1)smm(modn)
这个推导方式只关心 L 是不是 q1 的倍数,不用考虑 L 的具体值,因此 L=lcm(p1,q1) 时依然适用。


__EOF__

本文作者枫叶晴
本文链接https://www.cnblogs.com/maple276/p/17642262.html
关于博主:菜菜菜
版权声明:呃呃呃
声援博主:呐呐呐
posted @   maple276  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示