概述

迪菲-赫尔曼算法用于通信双方交换密钥. 还记得之前介绍HTTPS协议的时候, 提到需要先通过对方公钥来进行密钥的交换, 然后再通过密钥对通信内容进行加密. 迪菲-赫尔曼算法就是用于交换密钥的. . 此算法与非对称加密算法不同哦.

OK, 一起来看看吧.

引入

在正式介绍迪菲-赫尔曼算法之前, 先简单跟我思考下面场景.

现场有你, 小王和小李三个人, 你和小王之间需要建立一个共享密钥, 但是, 你们不能交头接耳, 你们之间说的话小李都能听到. 那么, 有什么办法能够建立共享密钥而不让小李知道呢? 现在开始, 跟着思路走一下.

我们假设以下的计算只有乘法没有除法, 即乘法是不可逆的(这里为了简单说明, 在后面会出现真正不可逆的函数)

第一步

你和小王都在心里默默的选择一个只有自己知道的数字, 比如: 你选了8, 小王选了3.

第二步

小王宣布一个公共数字, 当然, 这个数字也是他选的. 这个数字就暂定是5.

第三步

你和小王分别用私人数字与公共数字相乘, 得到新的私人-公共数字

第四步

你和小王分别将对方的 私人-公共数字 与自己的私人数字相乘, 得到的结果就是你们之间的共享密钥: 120.

最终来判断一下, 在这个过程中, 小李有没有可能拿到这个共享密钥: 120. 小李知道的所有信息是, 公共数字7以及你们的 私人-公共数字. (别忘了我们的假设, 没有除法). 显然, 仅凭乘法是得不出的.

那么现在问题来了, 这个不可逆的算法在哪?他在哪???

正式应用

他来了, 他来了, 他来了. 这个不可逆的算法来了.

有这样的一种运算, 将一个数字与n取模得出最终的数, 被称为钟运算. 想象一下一个时钟, 13点就是1点. 嗯, 就是这样.

计算一个指数并将结果与钟的大小取模, 这个过程就是下面的计算了. 例如, 如果钟的大小是12, 基数是2, 则计算公式是: 2^8%12=256%12=4.

问题, 只告诉你数字12, 2和4, 你能算出数字8么? 不能, 因为可能性太多了. 简单穷举一下:

  • 2^2%12 => 4
  • 2^3%12 => 8
  • 2^4%12 => 4
  • 2^5%12 => 8
  • 2^6%12 => 4

能看得出来很多哈. 重复一下上面的交换步骤, 开始尝试建立公共密钥

第一步

选择自己的私人数字.

第二步

公布公共数字, 这里公共数字需要两个, 一个数字是钟的大小, 一个数字是求幂的基数.

第三步

双方公布自己计算后的数字

第四步

混合得到共享密钥. 将对方的 公共-私人数字 为基数, 自己的私人数字为指数, 计算并和钟大小取模, 得出最终的共享密钥

OK, 至此, 密钥交换成功. 当然, 通过穷举的方法还是可以得到共享密钥. 例子中的数字为方便计算, 都很小. 但是, 现实使用中, 钟大小如果有几百位的数字呢?

对于数字的选择有个小小的限制:

  1. 钟大小的选择必须是一个素数(我也不知道为啥).

  2. 上面选取的基数2, 只能取到钟上的数字4和8. 现实中基数一般选取钟大小的本原根(我也不知道为啥叫这名). 比如2是11的本原根.(2^1%11 ... 2^10%11 的值分别为: 2,4,8,5,10,9,7,3,6,1. 涵盖了11的所有值. )

对了, 这个计算规则叫做离散对数, 名字不重要, 知道怎么回事就行了.

以上...

密钥交换算法: 迪菲-赫尔曼算法相关推荐

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

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

  2. Diffe_Hellman(迪菲-赫尔曼)算法

    Diffe_Hellman算法 1.Diffe_Hellman算法概念 Diffe_Hellman(迪菲-赫尔曼)算法也叫DH算法是Whitefield Diffie和Martin Hellman在1 ...

  3. java dh密钥交换_java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换

    概述 信息安全基本概念: DH(Diffie–Hellman key exchange,迪菲-赫尔曼密钥交换) DH 是一种安全协议,,一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一 ...

  4. Diffie-Hellman(迪菲-赫尔曼)秘钥交换协议

    1. 协议背景 对称密码体制: Bob利用对称密钥K对信息进行加密并将加密结果发送给Alice,Alice收到信息之后,用同样的密钥进行解密. 问题1:Alice是如何知道对称密钥K的?------即 ...

  5. 2015年图灵奖--惠特菲尔特·迪菲和马丁·赫尔曼简介

    大家好,我是执念斩长河.今天讲述的是2015年图灵奖获得者惠特菲尔特·迪菲和马丁·赫尔曼,图灵奖奖励他们为密码学做出开拓贡献.读完本篇博问大家可以收获的是: 赫尔曼的博士论文 迪菲是赫尔曼的助手 经典 ...

  6. python 3标准库道格_《PYTHON 3标准库 [美] 道格·赫尔曼》[美] 道格·赫尔曼(Doug Hellmann)著【摘要 书评 在线阅读】-苏宁易购图书...

    商品参数 作者: [美] 道格·赫尔曼(Doug Hellmann)著 出版社:机械工业出版社 出版时间:. 版次:. 印次:. 印刷时间:. 页数:. 开本:. ISBN:9787111608950 ...

  7. 西门子大中华区总裁兼CEO赫尔曼:智能自主制造将重塑工业格局!

    西门子大中华区总裁兼首席执行官赫尔曼(Lothar Herrmann) 2020年9月10日,西门子中国数字化创新峰会召开.会上,西门子展示了其在数字化解决方案和人工智能.边缘计算.5G.工业云等前沿 ...

  8. 歪写数学史(数学界的花木兰——苏菲﹒热尔曼)

    已经第十六章了,我终于可以荣幸的介绍这个系列中的第一位女性主人公,来自时尚之都同时也是数学家聚居地法国巴黎的---苏菲﹒热尔曼.在本章中我将用first name苏菲而不是last name热尔曼来称 ...

  9. 灵魂书籍 | 《记忆力心理学 | 赫尔曼·艾宾浩斯》

    余生很长, 一定要学会对自己好一点; 余生很短, 请不要带着遗憾离场; 余生很贵, 请努力地活成自己喜欢的模样! 目录 <记忆力心理学 | 赫尔曼·艾宾浩斯> 1.1 作者介绍 1.2 核 ...

最新文章

  1. 论海明威的存在主义宗教意识——存在主义虚无主义。注:部分观点个人不赞同...
  2. Win下PHP环境Eclipse PDT+XAMPP+XDebug部署
  3. js luhn算法_不会飞的鸟
  4. 多IDC GSLB的部署
  5. 微信淘宝等平台要互通!?腾讯阿里字节回应
  6. js 按给定数组的顺序给数组排序_JavaScript中如何如何给数组以及数组对象根据value值进行排序。...
  7. Linux环境下Swap配置方法
  8. 【Java】函数使用
  9. Linux环境下gcc静态编译/usr/bin/ld: cannot find -lc错误原因及解决方法。
  10. C语言经典100道编程练习题
  11. Opencv中convertTo函数
  12. C# 连接大华工业相机
  13. 超分辨率:Photo-Realistic Single Image Super-Resolution Using a Generative Adversarial Network论文翻译
  14. 子集构造法NFA转换成DFA
  15. 中国剩余定理与孙子问题
  16. 基于vue+ionic+capacitor的图书借阅app
  17. (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  18. 三网合一”将给中国和中国经济带来什么
  19. 教你怎样提高网速?怎么提高?如何提高?
  20. 已知分布函数求概率密度例题_初二一次函数知识点及做题思路解析,一次函数不好的同学看一看...

热门文章

  1. RSA私钥文件(PEM-PKCS#1)解析
  2. oracle 作业已存在,ORA-31634: 作业已存在
  3. 关于HTML的盒子的一些小问题
  4. java多线程打印helloworld,Java并发编程--多线程之HelloWorld
  5. android 换行模式,Android进阶之自定义View(1)实现可换行的TextView
  6. mysql5.7 存储二进制_mysql5.7二进制部署
  7. lstm原文_LSTM模型与水文模型在径流模拟中的比较
  8. 人工智能python小程序_Python:一个可以套路别人的python小程序
  9. ultraos win10启动盘_UltraISO制作U盘启动安装MSDN原版Win10系统教程 - SDN系统库
  10. 【LeetCode笔记】剑指Offer 59. I 滑动窗口的最大值(Java、单调队列)