Diffie-Hellman算法是一个用于密钥交换的算法。仅仅是用于密钥交换而已哦。加密就不行啦.
要了解Diffie-Hellman,首先要了解素数的原本根。素数p的原本根是一个整数,其幂可以产生1到p-1之间的所有整数。对任意整数b和素数p的原本根a,我们可以找到惟一的指数i,使得:b=ai mod p (0<= i <=(p-1))
假如用户甲和乙希望交换密钥,那么用户甲选择一个随机整数x1 < q,并计算y1 = a x1 mod q.
同样的,用户乙也独立地选择一个随机整数x2 < q,并计算y2 = a x2 mod q。甲和乙保持其x是私有的,但对另一方而言,y是公开可访问的。用户甲就计算k = y2 x1 mod q,乙计算k = y1x2 mod q。当然计算出来的这两个密钥k是相同的,神奇吧。