1.了解对称加密和非对称加密
1.1什么是对称加密?
加密和解密使用同样规则的方法,被称为“对称加密算法”。
比如说:甲方选择某一种加密规则,对信息进行加密。乙方使用同一种规则,对信息进行解密。
特点:
理论上,只要加解密“规则”(即“密钥”)足够复杂,这种方式也可安全的传递信息。
但这种方法最大的弱点就是,密钥在传递的过程中易被泄露。
常见的对称加密算法有:DES/3DES/AES
1.2 什么是非对称加密?
加解密信息的过程中,能让加密密钥(公钥)与解密密钥(私钥)不同,这种新的加密模式被称为“非对称加密算法”,通常个人保存私钥,公钥是公开的。
2.RSA算法介绍
2.1 什么是RSA算法?
RSA是目前最有影响力的公钥加密算法,算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥,即公钥,而两个大素数组合成私钥。
算法由来:
1977年,三位数学家Rivest、Shamir和Adleman设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字首字母命名,叫做RSA算法。RSA算法非常可靠,密钥越长,它就越难破解。
2.2 相关数学理论
2.2.1 什么是“素数”?
素数是这样的整数,它除了能表示为它自己和1的乘积以外,不能表示为任何其它两个整数的乘积。例如,15=3*5,所以15不是素数;又如,12=6*2=4*3,所以12也不是素数。另一方面,13除了等于13*1以外,不能表示为其它任何两个整数的乘积,所以13是一个素数。素数也称为“质数”。
2.2.2 什么是“互质数”(或“互素数”)?
互质数是这样定义的:“公约数只有1的两个数,叫做互质数。”这里所说的“两个数”是指自然数。
判别方法主要有以下几种(不限于此)
(1)两个质数一定是互质数。例如,2与7、13与19。
(2)一个质数如果不能整除另一个合数,这两个数为互质数。例如,3与10、5与 26。
(3)1不是质数也不是合数,它和任何一个自然数在一起都是互质数。如1和9908。
(4)相邻的两个自然数是互质数。如 15与 16。
(5)相邻的两个奇数是互质数。如 49与 51。
(6)大数是质数的两个数是互质数。如97与88。
(7)小数是质数,大数不是小数的倍数的两个数是互质数。如 7和 16。
(8)两个数都是合数(二数差又较大),小数所有的质因数,都不是大数的约数,这两个数是互质数。如357与715,357=3×7×17,而3、7和17都不是715的约数,这两个数为互质数。
2.2.3 什么是模指数运算?
指数运算谁都懂,不必说了,先说说模运算。模运算是整数运算,有一个整数m,以n为模做模运算,即m mod n。怎样做呢?让m去被n整除,只取所得的余数作为结果,就叫做模运算。例如,10 mod 3=1;26 mod 6=2;28 mod 2 =0等等。
模指数运算就是先做指数运算,取其结果再做模运算。
2.3 RSA算法实现过程
1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。
2. 根据欧拉函数,不大于N且与N互质的整数個数為(p-1)(q-1)。
3. 选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)。
4. 用以下这个公式计算d:d× e ≡ 1 (mod (p-1)(q-1))。
5. 将p和q的记录销毁。
在以上的内容中,(N,e)是公钥,(N,d)是私钥。