D-H不是一种加密算法,而是一种密钥交换算法。其思想是基于离散对数的,具体原理请参考Google或百度百科,本文只讲解具体操作过程。
加入现有双方A和B要进行秘钥交换:
有两个公开的数g和p,其中p为素数,g是p的一个元根。
First有自己的私钥a,Second有自己的私钥b,a,b均小于p,且私钥绝对保密。
交换过程如下:
1.First用私钥a生成A,过程如下:A = g^a mod p,然后通过信道发送出去。
2.Second用私钥b生成B,过程如下:B= g^b mod p,然后通过信道发出去。
3.Frist收到B后执行 B^a mod p = Fkey。
4.Second收到A后执行 A^b mod p =Skey。
5.Fkey = Skey (因为整体执行下来 Fkey = (g^b)^a mod p ,而Skey=(g^a)^b mod p,故相等。 )
进而达到共享秘钥的目的,二者通信可通过Fkey这个公共秘钥加密后面的通讯内容。
整个过程中因为只有g , p,A,B是公开的,私钥a,b保密的,故基于离散对数运算,敌人很难破解公共秘钥。
网友评论