RSA算法是一种”公钥加密算法”。早期的加密模式,就是加密和解密都是用同一种规则(密钥)。这种加密模式,就要求加密规则需要在双方进行传递,信息是很不安全的。在这种加密模式下的算法,也叫”对称加密算法”。而我们今天的RSA算法,是一种”非对称加密算法”,加密和解密使用不同的规则,只要这两种规则之间存在某种对应关系即可,这样就避免了直接传递密钥。
一、 数学理论
质数(素数)
在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数,也叫素数。
互质关系
如果两个数除了1以外,没有其他公因子,我们就称这两个数存在互质关系。比如,15和32没有公因子,所以它们之间有互质关系(不是质数也可以构成互质关系)。
欧拉函数
在数论中,对于正整数N,小于或等于N([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)。
任意两个数p、q,如果p、q存在互质关系,我们有φ(p*q)=(p-1)*(q-1)。这里就不证明了,举个例子就好。互质关系2、5,则φ(10)=1*4。结论,在1到10中,和10互质的正整数有4个(1,3,7,9)。
模反元素
如果两个互质数p,q,那么一定可以找到整数x,使得qx-1被p整除,或者说qx被p除的余数是1。这时,x就叫做q的模反元素。(上面公式,可以变换求xq+yp=1,求x,这里y为负数)
例子:互