密钥加密算法(一)

353 阅读3分钟

1. 历史介绍

1976年以前,都是采用同一种模式:

(1)甲方选择某一种加密规则,对信息进行加密;

(2)乙方使用同一种规则,对信息进行解密。 由于解密和加密使用相同的模式规则(简称“秘钥”),这种方式被称为对称加密算法 这种加密方式缺点:共用一个秘钥会造成安全性很难保证,并且,只有把秘钥告诉对方,对方才能解密,传递和保存就产生了困难。

image.png

于是乎,1976年,两位美国计算机学家Whitfield Diffie (左)和 Martin Hellman(右),提出了一种崭新构思,可以在不直接传递密钥的情况下,完成解密。这被称为"Diffie-Hellman密钥交换算法"

这种新的加密模式被称为"非对称加密算法"。

1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得, 私钥则是保密的。

(2)甲方获取乙方的公钥,然后用它对信息加密。

(3)乙方得到加密后的信息,用私钥解密。

image.png

后来,有三位数学家完善。1977年,三位数学家Rivest(左)、Shamir(中) 和 Adleman(右) 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法

名称类型安全速度数据量秘钥
DES对称加密适用于数据量大公钥
RSA非对称加密适用于数据量小公钥、私钥

2、RSA 加密原理

步骤说明描述备注
1找出质数P 、Q-
2计算公共模数N = P * Q-
3欧拉函数φ(N) = (P-1)(Q-1)-
4计算公钥E1 < E < φ(N)E的取值必须是整数 E 和 φ(N) 必须是互质数
5计算私钥DE * D % φ(N) = 1-
6加密C = M E mod NC:密文 M:明文
7一解密M =C D mod NC:密文 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

注:部分摘自阮一峰博客