1. Diffie-Hellman密钥交换算法原理
DH方法针对的是以下困难的局面:Alice和Bob 想共有一个密钥,用于对称加密。但是他们之间的通信渠道是不安全的。所有经过此渠道的信息均会被敌对方Eve看到。为了防止密钥泄露,Diffie与Hellman提出以下密钥交换协议:
- Alice和Bob先对p和g达成一致,而且公开出来。Eve也就知道它们的值了。
- Alice取一个私密的整数a,不让任何人知道,发给Bob 计算结果:A=g^a^ mod p. Eve 也看到了A的值。
- 类似,Bob 取一私密的整数b,发给Alice计算结果B=g^b^ mod p.同样Eve也会看见传递的B是什么。
- Alice 计算出K=B^a^ mod p=(g^b^)^a^ mod p=g^ab^ mod p.
- Bob 也能计算出K=A^b^ mod p=(g^a^)^b^ mod p=g^ab^ mod p.
- Alice 和 Bob 现在就拥有了一个共用的密钥K.
- 虽然Eve看见了p,g, A and B, 但是鉴于计算离散对数的困难性,他无法知道a和b 的具体值,所以Eve就无从知晓密钥K是什么了。
2. cpp实现
1 |
|