RSA 是目前使用最广泛的非对称加密密码算法,也称为公钥密码算法。它的名字是由它的三位开发者 Ron Rivest、Adi Shamir 和 Leonard Adleman 的 first name 的首字母组成的。
P.S.
对称密码是指在加密和解密时使用同一密钥的方式。
非对称加密则是指在加密和解密时使用不同密钥的方式。
1.RSA 加密
在 RSA 中,明文、密钥和密文都是数字,RSA的加密过程可以用下列公式来表达
密文=明文EmodN 密 文 = 明 文 E m o d N
对代表明文的数字 E 次方后再对其用 N 求余,就得到了用RSA加密后的密文。
2.RSA 解密
RSA 解密和加密过程一样简单
明文=密文DmodN 明 文 = 密 文 D m o d N
将加密后的密文求 D 次方后再用 N 求余,就得到了原来的明文。
简单来说就是 E和N的组合就是公钥,D和N的组合就是私钥
Name | Description |
---|---|
公钥 | 数E 和 数N |
私钥 | 数D 和 数N |
加密 | 密文=明文EmodN 密 文 = 明 文 E m o d N (明文的 E 次方除以 N 的余数) |
解密 | 明文=密文DmodN 明 文 = 密 文 D m o d N (密文的 D 次方除以 N 的余数) |
那么,我们该如何计算 E、D、N 三个数字呢?
3. 生成密钥对
生成顺序:N、E、D
3.1
N=p∗q N = p ∗ q ( p、q 为两个很大很大的质数)
中间过程
L=lcm(q−1,p−1) L = l c m ( q − 1 , p − 1 ) (L 是 p - 1, q - 1的最小公倍数)
3.2
1<E<L 1 < E < L
gcd(E,L)=1 g c d ( E , L ) = 1 (E 和 L 互质)
3.3
1<D<L 1 < D < L
E∗DmodL=1 E ∗ D m o d L = 1
总的来说就是
Name | Description |
---|---|
(1)求 N | 用伪随机数生成质数 p、q, N = p * q |
(2)求 L | L = lcm(p-1, q-1),L是q-1,p-1的最小公倍数 |
(3)求 E | 1 < E < L, gcd(E, L)=1, E、L互质 |
(4)求 D | 1 < D < L, E * d mod L = 1 |