Diffie-Hellman密钥交换

0x00.前提

  1. 公开一个生成器(generator),如:3 mod 7
  2. 双方各选择一个私有随机数

0x01.示例

理论 示例
step 1  生成一个A,B双方认可的生成器G() 生成器G模型,n为私有随机数
G(n)=3^n mod 17
step 2 双方各选择一个随机数 a,b a=15,b=13
step 3 双方分别将各自的随机数放入生成器计算密钥c,d
G(a)=c
G(b)=d
G(a)=3^15 mod 17 = 6=c
G(b)=3^13 mod 17 = 12=d
step 4 互相交换各自生成的数值 交换后,A拥有15和12,B拥有13和6
step 5 将生成器中的底数和质数用私有数和对方生成数替换 将模型中的底数3替换为对方的密钥,质数为各自私有数
A:12^15 mod 17 =10
B:6^13 mod 17=10

联立step 3和step 5可得:

A:(313 mod 17)15 mod 17 = 313^15 mod 17

B:(315 mod 17)13 mod 17 = 315^13 mod 17

指数交换值不变。