0x00.前提
- 公开一个生成器(generator),如:3 mod 7
- 双方各选择一个私有随机数
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
指数交换值不变。
[…] https://async.website/docs/notes/diffie-hellman密钥交换/ […]