RSA 非对称加密和 DH 密钥交换(译)

sixsixfly

Diffie-Hellman 密钥交换(Key Exchange)

问题:

通信双方使用一个对称加密的密钥进行通信,这时不能让通信双方之外任何人知道此对称加密的密钥,也就是密钥不能公开出来。

特点:

密钥不通过网络传输,可以在通信双方各自生成一致的密钥

解决方案/步骤:

  1. 通信双方各自挑选一个数字并各自保密(设为 x 和 y)
  2. 通信双方约定两个对外公开的质数(设为 g 和 n)
  3. 一方计算 $g^x$ mod n = A,另一方计算 $g^y$ mod n = B,相互告知 A 和 B
  4. 一方计算 $B^x$ mod n,另一方计算 $A^y$ mod n(双方计算结果相等)

举例:

  1. x = 4, y = 3
  2. g = 5, n = 23
  3. A = $g^x$ mod n = $5^4$ mod 23 = 4,B = $g^y$ mod n = $5^3$ mod 23 = 10
  4. $B^x$ mod n = $10^4$ mod 23 = 18,$A^y$ mod n = $4^3$ mod 23 = 18
  5. 18 即是双方共享的密钥

RSA 非对称加密(Asymmetric Encryption)

问题:

与我通信的任何一方都可以对信息进行加密,唯独我可以解密信息内容,我不与任何人共享解密密钥。

解决方案/步骤:

  1. 选择两个不相等的质数 p 和 q
  2. 计算 p 和 q 的乘积 n
  3. 计算 n 的欧拉函数 φ(n) = (p-1)(q-1) = t
  4. 随机选择一个整数 e,条件是 1< e < t,且 e 与 t 互质
  5. 计算 e 对于 t 的模反元素 d(存在一到多个整数 d,使得 ed-1 被 t 整除)
  6. 将 (e, n) 封装为公钥,(d, n) 封装为私钥
  7. 原始信息 m 加密后 c = $m^e$ mod n,通过 c 计算原始信息 m = $c^d$ mod n

举例:

  1. p = 11,q = 13
  2. n = p$\times$q = 11$\times$13 = 143
  3. t = (p-1)(q-1) = (11-1)*(13-1) = 120
  4. e 随机选择 7
  5. d = 103 (ed - 1 = 720 可以被 120 整除)
  6. 公钥 (e, n)=(7, 143),私钥 (d, n)=(103, 143)
  7. $m^e$ mod n = $9^{7}$ mod 143 = 48 = c,$c^d$ mod n = $48^{103}$ mod 143 = 9 = m

RSA算法原理(一)
RSA算法原理(二)
How RSA Works With Examples

阅读 1.5k
18 声望
0 粉丝
0 条评论
你知道吗?

18 声望
0 粉丝
文章目录
宣传栏