Diffie-Hellman密钥交换协议(python实现)
1、DH密钥交换过程
假设Alice和Bob需要共享一个对称密码的密钥,这时,Alice和Bob可以通过下面的方法进行DH密钥交换,从而生成共享密钥。
1.Alice向Bob发送大素数P和原根G,P和G可以由Alice和Bob中的任意一方生成。
2. Alice生成一个随机数A,A是一个1~P-2之间的整数。这个数是Alice的本地密钥,别人不知道。
3. Bob生成一个随机数B,B是一个1~P-2之间的整数。这个数是Bob的本地密钥,别人不知道
4. Alice将 A 2 ≡ G A ( m o d P ) A_2\equiv{G}^A(modP) A2≡GA(modP)这个数发送给Bob,这个数是公开密钥。
5. Bob 将 B 2 ≡ G B ( m o d P ) B_2\equiv{G}^B(modP) B2≡GB(modP) 这个数发送给Alice,这个数是公开密钥。
6. Alice用Bob发过来的数计算 K e y ≡ B 2 A ( m o d P ) Key\equiv{B_2}^A(modP) Key≡B2A(modP),这个数就是共享密钥。
7. Bob用Alice发过来的数计算 K e y ≡ A 2 B ( m o d P ) Key\equiv{A_2}^B(modP)