理解RSA算法

 我来答
户如乐9318
2022-07-24 · TA获得超过6662个赞
知道小有建树答主
回答量:2559
采纳率:100%
帮助的人:140万
展开全部

如果公钥加密的信息只有私钥解得开,只要私钥不泄露,通信就是安全的.

欧拉函数 ,在数论中,对正整数n,欧拉函数φ(n)是小于或等于n的正整数中与n互质的数的数目.例如:φ(8) = 4,因为1,3,5,7均与8互质.

通式:

如果n=1,则 φ(1) = 1 。因为1与任何数(包括自身)都构成互质关系。

如果n是质数,则 φ(n)=n-1 。因为质数与小于它的每一个数,都构成互质关系。比如5与1、2、3、4都构成互质关系。

如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则

如果n可以分解成两个互质的整数之积
n = p1 × p2 φ(n) = φ(p1p2) = φ(p1)φ(p2)

如果两个正整数a和n互质,则n的欧拉函数 φ(n) 可以让下面的等式成立:

如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。

这时,b就叫做a的"模反元素"。
比如,3和11互质,那么3的模反元素就是4,因为 (3 × 4)-1 可以被11整除。显然,模反元素不止一个, 4加减11的整数倍都是3的模反元素 {...,-18,-7,4,15,26,...},即如果b是a的模反元素,则 b+kn 都是a的模反元素。

比如,老张和老王是两名地下工作者,老张要向老王传达一个机密的文件.这时老张想到了RSA算法.
(1) 随机选择两个不相等的质数p,q.
这时,老张选择了61和53.
(2) 计算p和q的乘积n.

n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。实际应用中,RSA密钥一般是1024位,重要场合则为2048位。
(3) 计算n的欧拉函数φ(n).
根据上面所介绍的欧拉定理第四种情况:

(4) 随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质.
这时,老张从1-3120之间,随机选择了17.(实际应用中,常常选择65537).
(5) 计算e对于φ(n)的模反元素d
所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。

这个公式等价于

于是,找到模反元素d,实质上就是对下面这个二元一次方程求解。

那么,已知e = 17,φ(n) = 3120 ,求x的值

这个方程可以用"扩展欧几里得算法"求解,此处省略具体过程。总之,老张算出一组整数解为 (x,y)=(2753,15),即 d=2753。
(6) 将n和e封装成公钥,n和d封装成私钥
n=3233,e=17,d=2753,所以公钥就是 (3233,17),私钥就是(3233, 2753),即公钥为( n,e ),私钥为( n,d )。
实际应用中,公钥和私钥的数据都采用 ASN.1 格式表达。

老张进行了这些计算后,整理了下上面所提到的数字:

这六个数字之中,公钥用到了两个(n和e),其余四个数字都是不公开的。其中最关键的是d,因为n和d组成了私钥,一旦d泄漏,就等于私钥泄漏。
老张想,有没有可能在已知n和e的情况下,也就是知道公钥的情况下,推导出d?

结论:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。可是,大整数的因数分解,是一件非常困难的事情.

有了公钥和密钥,就能进行加密和解密了。
1.加密要用公钥 (n,e)
假设老张要向老王发送加密信息m,他就要用老王的公钥 (n,e) 对m进行加密。这里需要注意,m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。
所谓"加密",就是算出下式的c:

老王的公钥是 (3233, 17),老张的m假设是65,那么可以算出下面的等式:

于是,c等于2790,老张就把2790发给了老王。

2.解密要用私钥(n,d)
老王拿到老张发来的2790以后,就用自己的私钥(3233, 2753) 进行解密。可以证明,下面的等式一定成立:(证明过程略,有兴趣可以看阮一峰的博客)

也就是说,c的d次方除以n的余数为m。现在,c等于2790,私钥是(3233, 2753),那么,老王算出

因此,老王知道了老张加密前的原文就是65。

我们可以看到,如果不知道d,就没有办法从c求出m。而前面已经说过,要知道d就必须分解n,这是极难做到的,所以RSA算法保证了通信安全。
你可能会问,公钥(n,e) 只能加密小于n的整数m,那么如果要加密大于n的整数,该怎么办?有两种解决方法:一种是把长信息分割成若干段短消息,每段分别加密;另一种是先选择一种"对称性加密算法"(比如DES),用这种算法的密钥加密信息,再用RSA公钥加密DES密钥。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式