迪菲.赫尔曼(Diffie–Hellman)密钥交换算法

迪菲.赫尔曼算法是通信线路不安全情况下,交换密钥的一个算法,应用于TLS协议中

 

首先说一下生成密钥的流程,我们有这样一种计算叫做求摸运算 mod, 

比如:27 mod 17 = 10,也就是求余数的运算。 

 

现在有两个通信者A和B,我们使用一种计算 假如我们这里选用 

3 ^ x mod 17,A和B分别生成一个随机的整数,这个整数即为x,比如A是2,B是3,那么A使用2计算:

3^2 mod 17 = 9 ①

B使用3计算:

3^3 mode 17 = 10 ②

然后A将9发送给B,B将10发送给A。当然这里的9和10是可以被任何人看到。 

A收到B的10之后做这样的计算:

10^2 mod 17 = 15 ③

B收到A的9后做这样的计算:

9^3 mod 17 = 15 ④

这样15就可以作为两人通信加密的密钥了。 

 

突然一看还有点不明白,为什么这样的计算就能计算出相同的数字15? 

mod运算的性质 性质如下:

就像普通运算一样,他是可交换的、可结合的、可分配的,可以表示为

(a+b)mod n=((a mod n)+(b mod n))mod n

(a−b)mod n=((a mod n)−(b mod n))mod n

(a× b)mod n=((a mod n)×(b mod n))mod n

(a× (b+c))mod n=(((a× b)mod n)+((a× c)mod n)))mod n

 

A:在做③计算的时候使用的10是由②计算来的,也就是:

(3^3 mode 17)^2 mod 17 = 15 ⑤

B:做的④计算的时候使用的9是由①计算来的,也就是:

(3^2 mod 17)^3 mod 17 = 15 ⑥

那么接下来就证明为什么⑤和⑥会相等

(3^3 mode 17)^2 mod 17 == (3^2 mod 17)^3 mod 17

其实证明只是用到上面mod计算性质的第三条 

 

计算⑤等于以下的分解

=((3 * 3 * 3) mod 17)^2 mod 17

=(((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17)^2 mod 17

= ((((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17) * (((3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17)) mod 17

=((3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17) * (3 mod 17)) mod 17

= (3 mod 17)^6 mod 17

 

同理分解⑥ 也可得这个结果

= (3 mod 17)^6 mod 17

⑤⑥是相等的得证。 

在这个通信过程中可以看到A和B分别生成了一个随机数2和3,只要2和3不泄露,那么其他人即使知道3 mod 17、9、10这些信息也得不出15的这个结果。

 本文转自:https://blog.csdn.net/wangbaolongaa/article/details/49468187

转载于:https://www.cnblogs.com/wjq310/p/8642053.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值