1.RSA算法简介:


      RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。
      今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。
      RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。


(PS. 以上直接复制的百度百科的内容)。


2.RSA算法原理简介:


密码学_RSA算法原理详解_算法原理


3.RSA算法原理补充知识:


相信很多同学看了这个原理简介还是很懵逼的,尤其是一些没有学过离散数学,对数论没有一点概念的同学更是如此,小编这里对这个原理进行详细的解释,考虑到很多没有数论基础的同学对一些名词可能会很陌生,以下小编会尽量的用一些通俗的语言对RSA算法的原理进行一个详细的解释。


(1) 欧拉函数:


首先小编介绍欧拉函数,欧拉函数,用φ(n)表示,代表的是从1~n-1中与n互质(公因数只有1)的数的个数。


i) 那么很显然,如果n是一个质数,那么φ(n) = n-1,因为很显然比n小的数都和n互质。

ii)如果一个数是一个质数p的幂,即n = p^k,则φ(n) = p^k-p^(k-1) = (p-1)*p^(k-1),证明:n只与是p的倍数的数互质,n = p^k = p*p^(k-1),也就是说在1~n的范围内有k-1个数是p的倍数,所以φ(n) = p^k-p^(k-1) = (p-1)*p^(k-1)。

iii) 欧拉函数是一个积性函数,当n,m互质的时候,φ(n*m) = φ(n)*φ(m)。

(2) 单位元,逆元:


关于单位元和逆元,这两个东西是群论中非常重要的两个关键词,考虑到很多同学没有学过离散群论,这里也不太需要,那么这里小编也只介绍乘法逆元,以下的单位元就是1,也不再对单位元和逆元最总体的概念做介绍。


首先,如果我们已知A,C,知道A*B = C,那么我们求B的方法很简单,就是C/A。但是,如果我们已知A,C,M,知道A*B mod M = C,这个时候求B,我们就不能直接做除法了,因为很显然,除法是不满足同余的,这样的话我们就需要逆元,假设A关于M的逆元是P,那么A*P mod M = 1,这就是逆元的概念,相乘对M取模得到的是单位元1,有了逆元P,我们求解B就可以用C*P就可以得到B。


(3) 欧拉-费马定理:


如果a与n互质,那么一定有a^φ(n) mod n = 1,φ(n)就是前面介绍的欧拉函数。由于欧拉-费马定理的证明过程比较繁琐,且内容涉及到的数论知识很多,考虑到很多同学对数论知识了解比较少,这里小编知识给出这个定理的公式,不再给予证明。


4.RSA算法原理详解:


在理解了这些补充知识后,现在小编就一步一步的给大家解释这个原理的详细过程。


首先,我们随机选取两个质数p,q,取N = p*q,根据前面小编介绍到的欧拉函数的性质,因为p,q都为质数,所以其欧拉函数就是(p-1),(q-1),所以φ(N) = (p-1)*(q-1)。接下来我们再选择一个与φ(N)互质的数e,求出e关于φ(N)的逆元d,那么这个时候准备工作就好了,把e和N公布为公钥,用户保留d和N作为密钥。然后就是加密和解密的过程了,设A为我们的明文,C为我们的密文,加密的过程就是C = A^e mod N,解密过程就是A = C^d mod N,关键是解密过程可能有些同学会看不懂,小编这里证明一下,C^d mod N = (A^e)^d mod N = A^(e*d) mod N = A*A^(e*d-1) mod N,证明到这里需要小编之前介绍到的欧拉-费马定理和逆元,因为d为e关于φ(N)的逆元,所以e*d mod φ(N) =  1,意思就是说e*d除N余1,那么这个式子可以写成另一种形式:e*d = k*φ(N) + 1(k为常数),所以我们的原式就变成了A*A^(k*φ(N)+1-1) mod N = A*A^(k*φ(N)) mod N = A mod N。






以上就是对RSA原理通俗但是详细的全部分析详解(完)


                                                                                                     -------by Ra's Al Ghul