Diffe_Hellman算法

来源:互联网 发布:java判断是否数字 编辑:程序博客网 时间:2024/06/06 13:24

该算法是的目的是使两个用户能安全地交换密钥,以便在后续的通信中用该密钥来对信息进行加密。该算法本身只限于进行密钥交换。

   其有效性是建立在计算离散对数很困难的基础之上的。  离散对数定义:

                     首先定义素数的本源根。素数p的本源根是一个整数,且其幂能产生1到p-1之间所有整数。即:若a是素数p的本源根,则a mod p, a^2 mod p,...,a^(p-1)mod p 各不相同,它是整数1到p-1的一个置换。  对任意整数b和素数p的本源根a,我们可以找唯一的指数使得:b=a^i(mod p),0<=i<=(p-1),指数i称为b的以a为底的模p离散对数。

   密钥交换:通信的双方能够协商用于加密的密钥,并且不会遭到中间人攻击。

   用户A选择一个随机整数XA<q,用户B选择一个随机整数XA<q,并计算YA=a^XAmodq,类似的YB=a^XBmodq。A和B都对其X的值进行保密,但对另一方而言,Y方是公开可访问的。用户A计算K=(YB)^XAmodq 同样用户B计算K=(YA)^XBmodq并都以此作为密钥。这两个K经过换算所得到的值是一致的。展开为:K=(a^XAmodq)^XBmodq,因为X是保密的,所以攻击方只有通过a和q或者公开的YA/YB来攻击所以必须要计算离散对数才能

0 0
原创粉丝点击