一、理论化的表达方式
1、Alice与Bob确定两个大素数p和g,这两个数不用保密
2、Alice选择另一个大随机数a,并计算A如下:A=ga mod p
3、Alice将A发给Bob
4、Bob 选择另一个大随机数b,并计算B如下:B=gb mod p
5、Bob将B发给Alice
6、计算秘密密钥K1如下:K1=Ba mod p
7、计算秘密密钥K2如下:K2=Ab mod p
K1=K2,因此Alice和Bob可以用其进行加解密
二、数字化的表达方式
1、通信方Alice和通信方Bob约定g=5,p=23,g和p是公开的
2、Alice生成一个随机数a,a是保密的,如a=6
3、Alice计算g^a%p发送给Bob,g^a%p=5^6%23=8
4、Bob生成一个随机数b,b是保密的,如b=15
5、Bob计算g^b%p发送给Alice,g^b%p=5^15%23=19
6、Alice接收到g^b%p后,再使用保密的a,计算(g^b%p)^a%p=19^6%23=2
7、Bob接收到g^a%p后,再使用保密的b,计算(g^a%p)^b%p=8^15%23=2
8、这样通信方Alice和Bob得到一个相同的密钥:2
三、实践化的表达方式
1、Server Key Exchange消息
server端:用DH算法产生整数p,g,pubkey(即A=ga mod p),将这三个参数放到Server Key Exchange消息中。为了防止消息被恶意篡改,Server Key exchange消息中还要包含一个对公钥参数的签名signature。
Client端:收到此消息后,会把消息中的 p,g,pubkey(即A=ga mod p) 三个参数记录下来,有了这些,可以依据pubkey(即A=ga mod p)和 private(即b)计算出 pre-master。
2、Client Key Exchange消息
Client端:把产生的pubkey(即B=gb mod p) 放入Client Key Exchange消息中发给 server 。
server端:收到此消息后,会把消息中的pubkey(即B=gb mod p) 记录下来,可以依据pubkey(即B=gb mod p)和 private(即a)计算出 pre-master。
四、图形化表达方式
相关推荐
DH密钥交换的代码,别人写的,拿来给大家分享。
DH密钥交换算法。
(1)编程实现两个程序(c/s模式),两个程序之间可通过DH协议...(2)在共享密钥建立后,两个程序之间的消息交换要保证机密性(用对称加密算法和共享密钥加密)。(3)接收方能验证消息的真实性(消息完整和来源可性)
DH密钥交换算法这个机制的巧妙在于它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道确定对称密钥。 我用Java写了两个例子,有需要的可以看看。
DH密钥交换程序 用来测试验证DH密钥,存在小bug
单机版多对象进行密钥交换,内部提供了关于超过int范围的数值进行取模运算的反法。
Diffle-Human密钥交换 java平台实现 DH加密原理 生成的密钥存于文件 实习总结
主要介绍了eclipse实现可认证的DH密钥交换协议,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Diffie-Hellman-Merkle 密钥交换演示Diffie Hellman Merkle (DH) 密钥交换是建立传输层安全性 (TLS) 连接的关键组件。 在 DH 密钥交换结束时,两方将就用于加密和解密数据的对称密钥达成一致。 在实现 TLS 时,理解...
基于NTL算法库C++实现 &里面包含NTL算法库的静态库文件
基于椭圆曲线ECC的密钥交换程序-Magma。与DH-KAP可以进行效率比较,同样安全级别ECC稍快一些。
模拟DH密钥交换协议 用vs2008实现的
迪菲-赫尔曼密钥交换(Diffie–Hellman key exchange,简称“D–H”) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道建立起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来...
(1) 在线认证协议当前参与方的身份,其中某些协议只追求一方认证 (2) 在协议双方之间生成一个密钥Ks,Ks用于接下来对一切需要保密 (1) 如果协议任何一方
合肥工业大学密码学实验,改进的DH密钥协商(抗中间人攻击),含源码和报告,使用语言为Python,得分92.
Diffie-Hellman 密钥交换的纯 Python 实现。 Py2、Py3、PyPy 兼容。 例子 用作库: import pyDH d1 = pyDH . DiffieHellman () d2 = pyDH . DiffieHellman () d1_pubkey = d1 . gen_public_key () d2_pubkey = d2 ...
c语言编写的DH算法,借鉴学习 A系统构建密钥:构建一对公私密钥Private Key1和Public Key1; A系统向B系统公布自己的公钥(Public Key1); B系统使用A公布的公钥(Public Key1)建立一对密钥:Private Key2和...
Web协议详解与抓包实战
使得两个用户安全地交换一个秘密密钥以便用于以后的报文加密
主要介绍了java密钥交换算法DH定义与应用,结合实例形式分析了Java密钥交换算法DH的原理、定义、使用方法及相关操作注意事项,需要的朋友可以参考下