公钥加密之『迪菲–赫尔曼密钥交换』,颜色混合的把戏

news2024/11/28 10:32:37

前奏:
迪菲-赫尔曼密钥交换是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。
颜色混合:
在这里插入图片描述

如图所示,蛇和老鼠要交换一个共享密钥,双方以猪的颜色红色为基准(公开的),老鼠用自己的黄色(私有)加上红色然后公开出去这一混合颜色,蛇用自己的蓝色(私有)加上红色然后公开这一混合颜色。
此时,蛇,老鼠,猪都能看到的公开颜色是红色,红色混合了黄色,蓝色混合了红色。老鼠获取了蛇的混合颜色蓝红,然后加入自己的黄色,得到了另一种混合颜色蓝红黄,同理,蛇获取了老鼠公开的颜色黄红,然后加入了自己的蓝色,得到了混合颜色黄红蓝。
蛇鼠一窝最终获取了相同的混合颜色,而猪却无法得知最终的混合颜色。因为颜色有色差,猪无法从老鼠的混合颜色黄红中推测出老鼠用的是黄色,只能采取暴力破解(可能需要N年)。
数字相乘:
在这里插入图片描述

如图所示,蛇和老鼠再次传递共享密钥,不玩颜色把戏了,这回玩数字游戏。公开数字12,老鼠用自己的私有数字7乘以12,然后将结果84公开出去,蛇用自己的私有数字5乘以12,然后将结果60公开出去。

此时,蛇,老鼠,猪都能看到的数字是12,84,60。老鼠获取了蛇的公开数字60,然后乘以私有数字7得到结果420。同理,蛇获取老鼠公开的数字84,然后乘以私有数字5得到结果420。

蛇鼠一窝最终获取了相同的数字420,而猪却无法从三个公开的数字得到最终的数字,这里假设猪不会除法,只能使用乘法暴力破解。这里只是使用简单的乘法运算,下面会升级。

钟算和幂:

钟表上有12个数字,从1到12,过了12又重新回到1,所以13点就是1点(13-1=12),20点就是8点(20-12=8)。钟的大小可以任意设置,通常从0开始。比如钟大小为11代表从0到10,钟算(20)=9。

在这里插入图片描述

如图所示,蛇和老鼠再次传递共享密钥,钟大小公开选择11,底数公开选择2,老鼠根据底数2,用自己的私人数字7对底数进行幂运算,得到的结果进行钟算,钟算结果7公开。同理蛇根据底数2,用自己的私人数字6对底数进行幂运算,得到的结果进行钟算,钟算结果9公开。
此时,蛇,老鼠,猪都能知道钟大小11,底数2,公开的数字9和7。老鼠获取了蛇的公开数字9,然后使用自己的私有数字对9求幂,结果进行钟算最终得到结果4。同理蛇获取老鼠的公开数字7,然后使用自己的私有数字6对7求幂,结果进行钟算最终得到结果4。

蛇鼠一窝最终获取了相同的数字4,即便猪知道钟大小和底数,但无法得知7和9是由哪个数字钟算而来的。这里的数字还比较小,倘若取非常大的数字,暴力求解都有心无力。
知识补充:
1、钟大小的选择必须是素数,且底数必须为钟大小的本原根。
2、本原根:对底数求幂进行钟算,结果将会循环遍1~(钟大小-1)。
3、互质,两个数字的公约数只有1。
4、欧拉函数,小于n的正整数中与n互质的数字的个数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/763895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot热部署相关功能

文章目录 前言一、Springboot如何在IDEA中开启热部署二、热部署的相关知识1.热部署的范围2.关闭热部署 前言 环境是Mac电脑下的IDEA 2023.1.X版本 如何在修改程序后自动进行加载修改后的程序而不是重启加载所有资源而更新程序,这就使用到了Springboot相关的热部署功…

120页商业银行企业级IT架构规划ppt

导读:原文《商业银行企业级IT架构规划ppt》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需获取完整的电…

2023年7月17日,比较器,TreeMap底层,LinkedHashMap,Set接口

比较器 Comparator是外部比较器,用于比较来对象与对象之间的,两个对象进行比较,多用于集合排序 Comparable可以认为是一个内比较器,根据对象某一属性进行排序的。 1. 使用场景 ​ 内置比较器(Comparable)的…

Windows10下ChatGLM2-6B模型本地化安装部署教程图解

随着人工智能技术的不断发展,自然语言处理模型在研究和应用领域备受瞩目。ChatGLM2-6B模型作为其中的一员,以其强大的聊天和问答能力备受关注,并且最突出的优点是性能出色且轻量化。然而,通过云GPU部署安装模型可能需要支付相应的…

手把手带你创建微服务项目

1.先创建以下项目结构 2.在父项目中导入以下依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Web依赖 --><dependency>&l…

关于Java集合框架的总结

关于Java集合框架的总结 本篇文章先从整体介绍了java集合框架包含的接口和类&#xff0c;然后总结了集合框架中的一些基本知识和关键点&#xff0c;并结合实例进行简单分析。当我们把一个对象放入集合中后&#xff0c;系统会把所有集合元素都当成Object类的实例进行处理。从JDK…

分享四款导航页 个人主页html源码

一、开源免费&#xff0c;可以展示很多社交账号&#xff0c;也可以更换社交账号图标指向你的网站&#xff0c;上传后即可使用 https://wwwf.lanzout.com/ik7R912s031g 二、开源免费&#xff0c;不过部署稍微麻烦点 https://wwwf.lanzout.com/iCq2u12s02wb 三、适合做成导航页面…

Android性能优化篇[谷歌官方]

网上看到了个和Android性能优化相关的系列文章&#xff0c;觉的还不错&#xff0c;和大家分享下。 在Android领域&#xff0c;性能永远是一块大头。市场对这类人才的需求也是有增不减&#xff0c;而且薪资待遇也不错。如果大家想深入学习Android某个领域&#xff0c; 那性能这块…

190 → 169,50天瘦20斤随感

一头猪瘦二十斤没有人会在意&#xff0c;但一个人猛地瘦二十斤或许就会有意思~ 从五月底到7月中旬&#xff0c;大致50天瘦了21斤。本文大致从我自己的感想、方法、减肥前后的心态及身体变化等方面来给予你一些关键信息&#xff0c;希望对你有用吧。 当你发现自己真的在一斤一斤…

react CSS :last-child 最后一个下边框线如何去掉

需求&#xff1a;调用分类接口后&#xff0c;tab的最后一个border不要横线。 代码如下 逻辑是 i是否等于books数组的长度-1。 books.map((book, i) > { return( <View style{borderBottom:idx ! dictype.length - 1 && "1px solid #ECEFF7"} key…

CentOS7 mariadb10.x 安装

1、添加mariabd yum源 vi /etc/yum.repos.d/mariadb.repo [mariadb] name MariaDB baseurl https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/10.5/centos7-amd64/ gpgkey https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck 12、建立yum…

EMC学习笔记(十六)射频PCB的EMC设计(三)

射频PCB的EMC设计&#xff08;三&#xff09; 1.布线1.1 阻抗控制2.2 转角1.3 微带线布线1.4 微带线耦合器1.5 微带线功分器1.6 微带线基本元件1.7 带状线布线1.8 射频信号走线两边包地铜皮 2.其他设计考虑 1.布线 1.1 阻抗控制 PCB信号走线的阻抗与板材的介电常数、PCB结构、…

【山河送书第二期】:《零基础学会Python编程(ChatGPT版》

【山河送书第二期】&#xff1a;《零基础学会Python编程&#xff08;ChatGPT版》 前言内容简介作者简介 前言 在过去的 5 年里&#xff0c;Python 已经 3 次获得 TIOBE 指数年度大奖&#xff0c;这得益于数据科学和人工智能领域的发展&#xff0c;使得 Python 变得异常流行&am…

电脑pdf怎么转换成word文档?你不知道的几种方法

在电脑上&#xff0c;我们经常需要查阅PDF文件&#xff0c;并且PDF文件在生活中应用广泛&#xff0c;可以保存许多重要内容。有时候我们需要将PDF文件转换为Word文档&#xff0c;以便对文件内容进行编辑。幸运的是&#xff0c;在电脑上将PDF转换为Word文档非常方便&#xff0c;…

nginx实现反向代理

Nginx Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强。Nginx可以作为静态页面的web服务器&#xff0c;同时还支持CGI协议的动态语言&#xff0c;比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合…

生命在于折腾——MacOS(Inter)渗透测试环境搭建

一、前景提要 之前使用的是2022款M2芯片的MacBook Air 13寸&#xff0c;不得不说&#xff0c;是真的续航好&#xff0c;轻薄&#xff0c;刚开始我了解到M芯片的底层是ARM架构&#xff0c;我觉得可以接受&#xff0c;虚拟机用的不多&#xff0c;但在后续的使用过程中&#xff0…

《MySQL》事务

文章目录 概念事务的操作属性&#xff08;aicd&#xff09; 概念 一组DML语句&#xff0c;这组语句要一次性执行完毕&#xff0c;是一个整体 为什么要有事务&#xff1f; 为应用层提供便捷服务 事务的操作 有一stu表 # 查看事务提交方式(默认是开启的) show variables like au…

智能照明及控制系统在医院建筑中的应用

摘要&#xff1a;现阶段&#xff0c;我国的社会经济的发展水平不断提高&#xff0c;为智能照明系统的发展带来了新的契机。文章主要介绍了几类智能照明系统&#xff0c;分析了其优点&#xff0c;并介绍了智能照明系统在医院建筑中的具体应用&#xff0c;具有一定的参考价值。 …

数据结构顺序表,实现增删改查

一、顺序表结构体定义 #define MAXSIZE 8 //定义常量MAXSIZE&#xff0c;表示数据元素的最大个数为8 typedef int datatype; //重定义int类型&#xff0c;分别后期修改顺序表中存储的数据类型 typedef struct {int len; //顺序表长度datatype data[MAXSIZE…

微服务架构介绍 - SpringCloud Alibaba

1. 单体架构vs微服务架构 1.1 单机架构 1.1.1 什么是单体架构 一个归档包&#xff08;例如war格式&#xff09;包含了应用所有功能的应用程序&#xff0c;我们通常称之为单体应用。架构单体应用的方法论&#xff0c;我们称之为单体应用架构。&#xff08;就是一个war包打天下&a…