前几天和同事讨论IKE密钥交换流程时,提到了Diffie-Hellman交换。DH算法最主要的作用便是在不安全的网络上成功公共密钥(并未传输真实密钥)。但由于对于DH算法的数学原理则不清楚,因此私下对DH算法进行一个简单学习。

1. DH算法的交互流程:

  • Alice和Bob都有一个只有自己知道的私钥,在特定规则(g, a, p)下生成自己的公钥A;
  • Alice将自己的公钥A,连同g, p共同发给Bob
  • Bob在收到Alice发送来的公钥A, g, p后,先使用相同的规则((g, a, p))生成自己的公钥B;在使用Alice的公钥A计算生成共享密钥K
  • Bob将自己的公钥B发送给Alice即可。(Alice已经有g, p, 因此无需在发送)
  • Alice在接收到Bob的公钥B后,使用相同的规则计算成功共享密钥K

至此,Alice 和 Bob便同时拥有了共享密钥K。此时由于各自的私钥a,b未在互联网上传播,因此即使存在窥探者Eve,他仅通过公开的A\B\g\p在短时间内无法破解出a,b,K。因此DH算法便可以在不安全的网络上协商出密钥,基于此构建安全的加密通道。

2. 疑问:Alice和Bob最后计算的K值一样吗?

对于DH整个交互流程来说,比较简单,基本都可以理解。但是忽然说最后的K值相等,这多少有点突然和难以置信,让人有点猝不及防。

书本上都是这样解释的:

所以Alice和Bob的共享密钥K是相同的。但是,总感觉没有get到要领和精髓。因为我不知道mod(求余)的运算规则,不知道如下等式是否成立???

因此半夜凌晨1点从刚暖热乎的被窝又爬了出来,想要证明下他们给的公式是否正确( 其实当成定理记住也就OK了,不过我嘛,还是爬起来了)。证明这个公式也很简单:将求余运算转换为加减乘除运算,然后利用二项式展开公式便可以得到答案

至于为什么要将求余运算转换为加减乘除四则运算,原因是我不知道求余算法的规则,不然我也不需要多此一举了。

证明开始:

令:

则:

根据①②式可得:

将③带入上式可得:

使用二项式展开公式将

DH算法图解+数学证明相关推荐

  1. java dh算法_https密钥交换DH算法

    我们来看DH算法交换密钥的步骤.假设甲乙双方需要传递密钥,他们之间可以这么做: 甲首选选择一个素数p,例如509,底数g,任选,例如5,随机数a,例如123,然后计算A=g^a mod p,结果是21 ...

  2. dh算法 理论依据_DH算法原理

    DH 算法原理 DH 是 Diffie-Hellman 的首字母缩写, 是 Whitefield 与 Martin Hellman 在 1976 年提出了一个的密钥交换协议.我个人倾向于称 DH 算法 ...

  3. 与word2vec_Word2vec算法图解(一)

    今天的主题是:Word2vec算法图解(一) 一.word2vec算法简介 Sikp-grams(SG) 给定中心词去预测上下文单词. Continuous Bag of Words(CBOW) 给定 ...

  4. 算法图解:如何判断括号是否有效?

    作者 | 王磊 来源 | Java中文社群(ID:javacn666) 转载请联系授权(微信ID:GG_Stone) 今天要讲的这道题是 bilibili 今年的笔试真题,也是一道关于栈的经典面试题. ...

  5. 较真的来了!这篇【硬核论文】为何恺明新作MAE提供了一种理论解释和数学证明...

    关注公众号,发现CV技术之美 昨天,arXiv上出现了一篇非常硬核的论文"How to Understand Masked Autoencoder".该论文为何恺明的最新一作论文& ...

  6. 一文读懂APS系统的核心算法和数学理论

    APS系统拥有以数学模型为基础的最强算法,可以满足更高难度.更广泛的需求.但它不是可以直观理解的方法,真正的难点不在于把算法变成软件,而是在于寻找和证明这个算法.因此,各APS公司对其核心算法和数学理 ...

  7. DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换及RSA(学习笔记)

    DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换(学习笔记),来自B站: [不懂数学没关系]DH算法 | 迪菲-赫尔曼Diffie–Hellman 密钥交换_哔哩哔哩_bilibili ...

  8. 《算法图解》读书笔记—像小说一样有趣的算法入门书

    前言 学习算法课程的时候,老师推荐了两本算法和数据结构入门书,一本是<算法图解>.一本是<大话数据结构>,<算法图解>这本书最近读完了,读完的最大感受就是对算法不再 ...

  9. 算法笔记——数学相关

    算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...

  10. 歌德巴赫猜想数学证明

    歌德巴赫猜想数学证明 证明方法一: 歌德巴赫猜想的证明需要借助数学理论,其中包括数论和组合数学等方面的知识.以下是一种基于矩阵和组合数学的证明方法: 首先,定义一个n*n的01矩阵A,其中A[i][j ...

最新文章

  1. 前端网页、php与mysql数据库字符编码(解决中文等乱码问题
  2. sublime tex创建可服用的片段
  3. python正则表达式操作指南_Python正则表达式操作指南
  4. django的表单系统
  5. 红米路由器ac2100怎样设置ipv6_Redmi路由器AC2100开箱:六天线简单直接,功能丰富对玩家友好...
  6. AC自动机-HDU2222-模板题
  7. Mocha 和 Chai 入门初探
  8. sql server 更新语句
  9. 怎么将高版本DWG格式图纸转换成低版本的DXF格式?
  10. 超强扒站神器:SiteSucker Pro for Mac(4.1.3多语言)
  11. ubuntu 18 安装显卡驱动时卡死及系统重装
  12. win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)
  13. qt 雷达扫描障碍物_激光雷达Lidar与毫米波雷达Radar:自动驾驶的利弊
  14. Qt设置鼠标光标样式
  15. Pixhawk指示灯和蜂鸣器含义
  16. 2022年12月招聘、内推最新职位
  17. Java集合--阻塞队列(LinkedBlockingQueue)
  18. 长风破浪会有时,直挂云帆济沧海——纪念2020,展望2021
  19. Azure function app的使用
  20. Excel转储mysql_小程序解析excel表格并存储到云数据库

热门文章

  1. SM4-ECB加解密
  2. 安卓一键新机_「科技犬」三星华为频发新品对标iPhone12,稳固安卓生态
  3. vmstat 命令详解
  4. SSM流程及核心原理
  5. 未来编程语言展望——G语言的神奇新要素
  6. JAVA与GO语言之间应该选择学习哪个?
  7. Lattice Diamond 学习总结---“疑难杂症”杂篇
  8. jsp怎么做柱状图_jsp圆饼图与柱状图代码
  9. 斯坦福NLP名课带学详解 | CS224n 第7讲 - 梯度消失问题与RNN变种(NLP通关指南·完结)
  10. 雅思考试流程、需要具体注意些什么、怎么复习?