关于RSA算法的介绍请参考http://baike.baidu.com/view/10613.htm,在此就不做详细介绍
这里主要说一下RSA算法的过程和思想
一、加密过程
1.选择两个大素数p、q,p和q不易太接近,这个大到底多大呢,参考是使的p、q的乘积为1024比特数量级,那么问题来了,如何找到这么大的素数,一般方法是验证2^2^x - 1是否为素数,至于如何验证,就要用到欧拉函数、费马小定理等: k^φ(n) mod n = 1(什么是素数,请参考http://baike.baidu.com/view/10626.htm?fromtitle=%E7%B4%A0%E6%95%B0&fromid=115069&type=syn)
2.n = p*q ; z = (p-1)(q-1)
3.选择一个小于n的整数e,使得e和z互素(互为素数),e用于加密
4.找到一个整数d,使得e*d-1可以被z整除,d用于解密,至于为啥d一定存在,请看下面,在裴定一的《算法数论》一书中的第一章有个定理 (a,b) = a*x + b*y,a、b、x、y为整数,因此对于e和z一定有e*d + x*z = 1,d和x均为整数,因此一定存在d。
5.得到公钥为二元组(n,e),得到密钥为二元组(n,d)。
6.设明文为m,密文为c
7.加密:c = m^e mod n;解密:m = c^d mod n
二、思想
对于传统的经典加密算法如替换加密算法、DES算法、AES算法等基本都是对称的,也就是加密与解密过程有对称性,因此这些算法都容易被暴力破解。但是对于RSA算法的加密过程,它不具有对称性,为什么呢,因为对于两个大素数相乘得到一个大整数这是很容易的,但是将一个很大的整数分解为两个大素数相乘却是一件极不容易的事儿,这也是为什么选择p和q的时候两个数不易太接近的原因,太接近则容易分解。正是因为这种不对称性,造就了RSA算法难以被暴力破解的特性,而这正是加密算法所最需要的。