龙空技术网

RSA算法——公开密钥系统

一米阳光Sir 267

前言:

现时兄弟们对“1000加密算法”大概比较关注,咱们都想要了解一些“1000加密算法”的相关资讯。那么小编同时在网络上搜集了一些关于“1000加密算法””的相关资讯,希望大家能喜欢,大家快快来了解一下吧!

这套密码系统,是当今世界上、史上最强加密系统,没有之一,我们日常所有的与金钱有关的信息往来,全部用这套系统加密。RSA算法的一个最大的优点就是,我不怕被人知道我的加密方法,我不怕告诉别人我的一个密钥,因为告诉你也没用。我们来看看这个系统是怎样工作的。

假设两个人:庞涓和孙膑,庞涓要给孙膑一个特别的数字m=520,当然不能让别人知道了,那样太尴尬了对不。

第一步,孙膑选择两个不相等的质数。如p=61和q=53

第二步,计算两个质数的乘积,n=pq=61×53=3233

第三步,计算n的欧拉函数,φ(n)=60×52=3120(关于欧拉函数,另文撰写)

第四步,随机选择一个整数e,1<e<φ(n),且e与φ(n)互质,庞涓选了e=17

第五步,解不定方程ex+φ(n)y=1,即17x+3120y=1得x=2753,y=-15(关于这个方程的解法,另文撰写,数字小的话直接试试就好),则d=2753

公布公钥(n,e)=(3233,17),保护好自己的私钥(n,d)=(3233,2753)

第六步,加密。计算m^e除以n的余数,即c=mod(520^17,3233)=1077。(这个计算用Excel就可以完成,不需要计算器)于是庞涓将c=1077发给了孙膑。

第七步,解密。孙膑拿到c=1077后,用自己的私钥(n,d)=(3233,2753)来解密。计算c^d除以n的余数,即mod(1077^2753,3233)=520(孙膑脸上泛着幸福的红晕)

这个加密系统中,私钥(n,d)是最关键的,要保护好,一旦丢失,就等于失去秘密。

问题:有没有可能由(n,e)倒推出(n,d)呢?

要知道d,由第五步得,必须知道φ(n)

要知道φ(n),由第三步得,必须分解质因数n=pq

要倒推出d,必须对n进行分解质因数。而对于大整数n的分解质因数,数学上毫无办法,惟一能实现的办法就是暴力破解,也就是一个质数一个质数去试。目前公开能分解的最大整数是1230 1866 8453 0117 7551 3049 4958 3849 6272 0772 8535 6959 5334 7921 9732 2452 1517 2640 0507 2636 5751 8745 2021 9978 6469 3899 5647 4942 7740 6384 5925 1925 5732 6303 4537 3154 8268 5079 1702 6122 1429 1346 1670 4292 1431 1602 2212 4047 9274 7377 9408 0665 3514 1959 7459 8569 0214 3413

这是个232位整数,也是暴力破解的上限,当然以后量子计算机出现了,估计这个上限还会增加,但只要数学没有突破,无非就是密码长一定罢了。

如此完成了一个完整的信息传递过程。我们看到,如果不知道d,其他人是无论如何也算不出m=520的,而要知道d,就必须对n进行分解质因数,而这又是极端困难。即便本例,n只有区区3233四位数,分解质因数就已经非常困难,不得不借助计算机了。

小结一下,RSA算法其实是三个步骤。

1、计算公钥和私钥。随机选择质数p,q,n=pq,随机选择与φ(n)互质的数e,解方程ex+φ(n)y=1,其中d=x

2、加密,c=mod(m^e,n)

3、解密,m=mod(c^d,n)

算法简单,计算容易,破解困难,这是RSA加密的最大特点。缺点嘛……密码实在太长了,1000位以下的密码根本就不放心。一般金融需要至少1024位,国防需要2048位。其次,这个算法的全部依托是现在的数学水平,假如哪天某个数学家突破了这个难题,他很容易就能分解大整数,这个人就太可怕了,不敢想象。

标签: #1000加密算法