Java 加解密技术系列之 DH

本文详细介绍了Diffie-Hellman(DH)密钥交换的原理,展示了如何在Java中实现这一过程。通过两个通信方A和B的交互,他们能够生成并共享一个共同的密钥,该密钥对第三方隐藏。讨论了如何计算(g^b)^a和(g^a)^b以得到相同的密钥,并给出了实际的代码实现和结果。
摘要由CSDN通过智能技术生成



上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — —  DH。当然,可能有很多人对这种加密算法并不是很熟悉,不过没关系,希望今天这篇文章能帮助你熟悉他。


概念


DH,全称为“Diffie-Hellman”,他是一种确保共享KEY安全穿越不安全网络的方法,也就是常说的密钥一致协议。由公开密钥密码体制的奠基人Diffie和Hellman所提出的一种思想。

简单的说就是允许两名用户在公开媒体上交换信息以生成“一致”的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥)。

以此为基线,作为数据传输保密基础,同时双方使用同一种对称加密算法构建本地密钥(SecretKey)对数据加密。这样,在互通了本地密钥(SecretKey)算法后,甲乙双方公开自己的公钥,使用对方的公钥和刚才产生的私钥加密数据,同时可以使用对方的公钥和自己的私钥对数据解密。不单单是甲乙双方两方,可以扩展为多方共享数据通讯,这样就完成了网络交互数据的安全通讯!


原理


  • 通信方A和通信方B约定一个初始数g,g是公开的,如g=5;
  • A生成一个随机数a,a是保密的,如a=6;
  • A计算g^a发送给B,g^a=5^6;
  • B生成一个随机数b,b是保密的,如b=15;
  • B计算g^b发送给A,g^b=5^15;
  • A接收到g^b后,再使用保密的a,计算(g^b)^a=g^(a*b)=5^(6*15) ;
  • B接收到g^a后,再使用保密的b,计算(g^a)^b=g^(a*b)=5^(6*15);
  • 这样通信方A和B得到一个相同的“密钥”g^(a*b)=5^(6*15)。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值