1. 历史介绍
1976年以前,都是采用同一种模式:
(1)甲方选择某一种加密规则,对信息进行加密;
(2)乙方使用同一种规则,对信息进行解密。 由于解密和加密使用相同的模式规则(简称“秘钥”),这种方式被称为对称加密算法 这种加密方式缺点:共用一个秘钥会造成安全性很难保证,并且,只有把秘钥告诉对方,对方才能解密,传递和保存就产生了困难。
于是乎,1976年,两位美国计算机学家Whitfield Diffie (左)和 Martin Hellman(右),提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"。
这种新的加密模式被称为"非对称加密算法"。
1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得, 私钥则是保密的。
(2)甲方获取乙方的公钥,然后用它对信息加密。
(3)乙方得到加密后的信息,用私钥解密。
后来,有三位数学家完善。1977年,三位数学家Rivest(左)、Shamir(中) 和 Adleman(右) 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。
| 名称 | 类型 | 安全 | 速度 | 数据量 | 秘钥 |
|---|---|---|---|---|---|
| DES | 对称加密 | 弱 | 快 | 适用于数据量大 | 公钥 |
| RSA | 非对称加密 | 强 | 慢 | 适用于数据量小 | 公钥、私钥 |
2、RSA 加密原理
| 步骤 | 说明 | 描述 | 备注 |
|---|---|---|---|
| 1 | 找出质数 | P 、Q | - |
| 2 | 计算公共模数 | N = P * Q | - |
| 3 | 欧拉函数 | φ(N) = (P-1)(Q-1) | - |
| 4 | 计算公钥E | 1 < E < φ(N) | E的取值必须是整数 E 和 φ(N) 必须是互质数 |
| 5 | 计算私钥D | E * D % φ(N) = 1 | - |
| 6 | 加密 | C = M E mod N | C:密文 M:明文 |
| 7 | 一解密 | M =C D mod N | C:密文 M:明文 |
RSA加密过程:
1、 随机找两个质数 P 和 Q ,P 与 Q 越大,越安全;
2、 计算他们的乘积 n = P * Q
3、 计算 n 的欧拉函数 φ(n):φ(n) = φ(P * Q)= φ(P - 1)φ(Q - 1) = (P - 1)(Q - 1)
4、 随机选择一个整数 e,条件是 1< e < φ(n),且 e 与 φ(n) 互质
5、 计算e对于 φ(n) 的模反元素d,可以使得 ed 除以 φ(n) 的余数为 1 ( 1<d<e,且ed mod φ(n) = 1 ) 即:d=e^-1 ( mod φ(n) )
6、 公钥(n,e);私钥(n,d);
加密:c = m^e mod N (c:密文)
解密:m = c^d mod N(m:明文)
例题:
例题:在RSA加密体制中, 已知素数 p = 7, q = 11, 公钥 e = 13, 试计算私钥 d 并给出对明文 m = 5 的加密,求其密文. 已知密文 c = 15, 求其明文
解: n=pq=77 φ(n)=(p-1)(q-1)=60 ed≡1 mod φ(n) 即13d mod 60 = 1 解得:d = 37 公钥(n,e)=(77,13) 密文c = m^e mod n = 5^13 mod 77 = 26 私钥(n,d)=(77,37) 明文m = c^d mod n = 15^37 mod 77 = 71
注:部分摘自阮一峰博客