##一、对称加密算法
在RSA算法出现之前,人们一直用的是对称加密算法,什么是对称加密算法:
加解密双方使用同一套密钥,即甲用密钥加密,乙还得用与甲同样的密钥来减密,这就存在极大的安全隐患。
常用的对称加减密算法有:DES, 3DES,AES,SM1(国密中的对称算法,密钥长度是128位)等。
##二、非对称加密算法
针对对称算法的不足,后来有三位大牛想出了一套非对称算法,也就是现在我们常说的RSA算法。这个算法里用到了很多数学知识,起到数学,感觉就不是一般人能研究的,不过人类生活中很多东西都与数学息息相关,没有数学就没有现在美好的生活,所以下面简单说明几个数学概念。
###1、互质关系
质数, 素数,这两个名词很多人在数学习课本里都听过,好像在中学的数学课本里就有了,它们表示同一个东西,只是两种不同叫法,那什么是质数?
任意一个数如果只能被1和它本身整除,这个数就是质数。
那什么是互质关系呢?如果两个正整数,除了1以外,没有其他公因子,那这两个数就是互质关系。
通过互质关系的概念,不难发现两个质数肯定是互质关系,但不一定互质关系的两个数一定都是是质数,比如15与32。以下是别人关于互质关系的总结:
a. 任意两个质数构成互质关系,比如13和61。
b. 一个数是质数,另一个数只要不是前者的倍数,两者就构成互质关系,比如3和10。
c. 如果两个数之中,较大的那个数是质数,则两者构成互质关系,比如97和57。
d. 1和任意一个自然数是都是互质关系,比如1和99。
e. p是大于1的整数,则p和p-1构成互质关系,比如57和56。
f. p是大于1的奇数,则p和p-2构成互质关系,比如17和15。
###2、欧拉函数
何为欧拉函数?
在任意的正整数n,请问在小于等于n的正整数中,有多少个与n构成互质关系,计算这个值的方法,就叫做欧拉函数,以φ(n)表示。
比如正整数8,φ(8)=?,很快算出有1、3、5、7,所以φ(8)=4
根据前面对质数,互质关系,欧拉函数的介绍,大牛们把欧拉函数又推导出下面几个等式也成立:
1)如果n可以分解成两个互质的整数之积,即n=p×q,则有:φ(n)=φ(pq)=φ§φ(q);
2)一个数如果是质数,则小于它的所有正整数与它都是互质数;所以如果一个数p是质数,则有:φ§=p-1。
3)如果n可以分解成两个互质的整数之积n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)
4)如果n是质数的某一个次方,即 n = p^k (p为质数,k为大于等于1的整数),则
φ(pk)=pk-p(k-1)=pk(1-1/p).
比如: φ(8) = φ(2^3) =2^3 - 2^2 = 8 -4 = 4; φ(8) = φ(23)=23(1-1/2)=4
5)因为任意一个大于1的正整数,都可以写成一系列质数的积:
n=p1k1p2k2…prkr,根据第三条定律,则φ(n)=φ(p1k1)φ(p2k2)…φ(prkr)
再根据第四条定律,则φ(n)=p1k1p2k2…pr^kr(1-1/p1)(1-1/p2)…(1-1/pr),也就等于
φ(n)=n(1-1/p1)(1-1/p2)…(1-1/pr),这就是欧拉函数的通用计算公式,举例:1323的欧拉函数,计算过程如下:
φ(1323)=φ(33x72)=1323(1-1/3)(1-1/7)=756
###3、欧拉定理
欧拉函数的用处,在于欧拉定理。
如果两个正整数a和n互质,则n的欧拉函数φ(n)可以让下面的等式成立:
a^φ(n)≡1mod(n)
比如,3和7互质,而7的欧拉函数φ(7)等于6,所以3的6次方(729)减去1,可以被7整除(728/7=104)。
###4、模反元素
如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。
根据欧拉定理有:
aφ(n)=axaφ(n-1)≡1mod(n),令b=a^φ(n-1),则ab≡1mod(n),这里b就是a的模反元素。
比如