HTTPS的工作流程
.
HTTPS是什么?
https是应用层中的一个协议,是在http协议的基础上引入的一个加密层。
为什么需要HTTPS
由于http协议内容都是按照文本的方式明文传输的,这就导致传输过程中会出现一些被篡改的情况。
运营商劫持事件
最开始百度,搜狗等浏览器是使用http传输数据的,总所总之,百度是靠广告赚钱的,广告主那边的服务器会统计http中的reference
的地址是谁的,如果是百度的,会给百度一定费用。但是在传输过程中,需要经过运营商的交换机,路由器,会解析出当前传输的数据,把reference
的百度地址,改成自己,让广告主给自己付钱。从此以后,互联网公司纷纷升级成https。
HTTPS的加密过程
引入对称加密
对称加密就是通过同一个“密钥”,把明文加密成密文,并且也能把密文解密成明文。
最简单的对称加密:按位与
假设明文 a=1234,密钥 key=8888
经过加密a^key得到密文b = 9834
然后针对密文9834再进行运算b^key,得到的就是原来的明文1234
当然https肯定不是采用这种方式
引入对称加密后,即使数据被截取,由于黑客不知道密钥是什么,因此就无法进行解密。
但是事情并没有那么简单,服务器同一时刻需要给多个客服端提供服务,每个客户端使用的密钥是不相同(如果相同,密钥容易扩散,黑客很容易拿到),因此服务器需要维护每个客户端和每个密钥之间的关联。将每个客服端的密钥都存在服务器,不现实。
比较理想的做法,就是在客户端和服务器建立连接的时候,双方协商确定这次密钥是什么
但是如果直接将密钥明文传输,那么黑客也就能获得到密钥了。
因此密钥的传输必须加密传输!
如果是使用对称加密,那就是掩人耳目。需要引入非对称加密。
非对称加密
非对称加密会使用两个密钥,一个是公钥,一个是密钥。公钥和密钥是配对的,可以通过公钥给明文加密,在通过密钥对密文解密;也可以反过来使用。
让服务器生成一对非对称密钥,一个是公开出来的,任何人都能获取到公钥;另外一个是私密的,只有服务器自己知道。
- 客户端在本地生成对称密钥, 通过公钥加密, 发送给服务器.
- 由于中间的网络设备没有私钥, 即使截获了数据, 也无法还原出内部的原文, 也就无法获取到对称密钥
- 服务器通过私钥解密, 还原出客户端发送的对称密钥. 并且使用这个对称密钥加密给客户端返回的响应数据.
- 后续客户端和服务器的通信都只用对称加密即可. 由于该密钥只有客户端和服务器两个主机知道, 其他主机/设备不知道密钥即使截获数据也没有意义.
但是黑客还是有办法入侵的,即中间人攻击!
这就类似于,A喜欢B,不好意西开口,叫C帮他传话,结果C嫉妒B,本来B同意,却跟A说B拒绝你了。
:::success
由于对称加密加密的效率比非对称加密高很多,因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密。
:::
引入证书
解决中间人攻击的关键,就是要能够证明这个公钥,是服务器自己的公钥,而不是伪造的。
相关文章:

HTTPS的工作流程
. HTTPS是什么? https是应用层中的一个协议,是在http协议的基础上引入的一个加密层。 为什么需要HTTPS 由于http协议内容都是按照文本的方式明文传输的,这就导致传输过程中会出现一些被篡改的情况。运营商劫持事件最开始百度,…...

C++语言的广泛应用领域
目录 1. 系统级编程 2. 游戏开发 3. 嵌入式系统 4. 大数据处理 5. 金融和量化分析 6. 人工智能和机器学习 7. 网络和通信 结语 C是一种多范式编程语言,具有高性能、中级抽象能力和面向对象的特性。由Bjarne Stroustrup于1979年首次设计并实现,C在…...

Lambertian模型(完美漫反射)
这里使用相乘的方式组合光照色和纹理色。根据这个模型,面朝光源的区域光照强度高,纹理色也相应增强。面背光源的区域光照弱,纹理色也被抑制。这样通过光照和纹理的结合,可以合成出具有照明效果的面部颜色,而不仅仅是固定的纹理本身的颜色。相乘方式可以近似实现不同光照方向下面…...

MATLAB的编程与应用,匿名函数、嵌套函数、蒙特卡洛法的掌握与使用
目录 1.匿名函数 1.1.匿名函数的定义与分类 1.2.匿名函数在积分和优化中应用 2.嵌套函数 2.1.嵌套函数的定义与分类 2.2.嵌套函数彼此调用关系 2.3.嵌套函数在积分和微分中应用 3.微分和积分 4.蒙特卡洛法 4.1.圆周率的模拟 4.2.计算N重积分(均匀分布&am…...

NFS服务器的搭建
架设一台NFS服务器,并按照以下要求配置 准备阶段:准备两台虚拟机,一台作为服务端,一台作为客户端 服务端(Server):192.168.75.139 客户端(Client):192.168.75.160 两…...
安卓Frida 常用脚本
打印调用堆栈, hook 某个方法,想看下调用堆栈,代码如下: function showStacks() {Java.perform(function () {send(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Exception").$new()));});} 二,需要hook okhttp3 HttpUrl …...

机器学习数据预处理——Word2Vec的使用
引言: Word2Vec 是一种强大的词向量表示方法,通常通过训练神经网络来学习词汇中的词语嵌入。它可以捕捉词语之间的语义关系,对于许多自然语言处理任务,包括情感分析,都表现出色。 代码: 重点代码&#…...

面试算法常考题之-------逆波兰式合集
逆波兰式背景介绍 逆波兰式是一种特殊的数学表达式表示法,它的诞生背景可以追溯到20世纪30年代。当时,波兰数学家Jan Wjtowicz和Wacław Sierpiński提出了一种新的数学表达式表示法,这种表示法将运算符放在操作数之后,而不是传统…...
独热编码和Word2Vec的区别
独热编码和Word2Vec都是自然语言处理中将词向量化的方式,但它们之间并没有直接的关系或依赖性。它们可以被视为在处理词向量时的两种不同方法或策略。 独热编码是一种简单直观的方法,每个词被表示为一个长向量,其中只有一个元素是1࿰…...
RestTemplate.postForEntity 方法进行 HTTP POST 请求
RestTemplate 是 Spring Framework 提供的一个用于处理 HTTP 请求的客户端工具。其中,postForEntity 是 RestTemplate 提供的用于发送 HTTP POST 请求并返回 ResponseEntity 对象的方法。 public <T> ResponseEntity<T> postForEntity(String url, Obj…...

盘点双11!阿里妈妈助这些品牌短视频赢增长!
刚刚!一年一度的双11落下帷幕,很多新变化值得回味。 尽管天气在变凉,但市场出现了逐渐回暖的迹象。在此背景下,大量商家特别关心如何在双11打一场漂亮的胜仗。 卖方如何行动,关键在于买方的变化。在阿里妈妈发布的《…...

内网可达网段探测netspy- Mac环境
netspy是一款快速探测内网可达网段工具 当我们进入内网后想要扩大战果,那我们可能首先想知道当前主机能通哪些内网段。 netspy正是一款应用而生的小工具,体积较小,速度极快,支持跨平台,支持多种协议探测,…...

Liunx命令汇总
一.用户相关命令 1.1账号管理 创建用户: useradd (选项) 用户名用户口令: passwd (选项) 用户名修改用户: usermod 选项 用户名删除用户: userdel (选项) 用…...

自动控制原理--面试问答题
以下文中的,例如 s_1 为 s下角标1。面试加油! 控制系统的三要素:稳准快。稳,系统最后不能震荡、发散,一定要收敛于某一个值;快,能够迅速达到系统的预设值;准,最后稳态值…...
Word2Vec的缺点
Word2Vec虽然非常强大,但也有一些明显的缺点: 无法处理多义词:Word2Vec会为每个单词分配一个唯一的词向量,这意味着它不能处理具有多种含义的单词。例如,“苹果”可以指一种水果,也可以指一个公司ÿ…...
vue如何解决跨域?原理?
Vue.js本身并不直接解决跨域问题,而是依赖于浏览器的同源策略。但是,Vue提供了一些方法来帮助我们解决跨域问题。 原理: 浏览器的同源策略规定,不同源(协议、域名、端口)之间的网络请求受到限制ÿ…...

Conda executable is not found 三种问题解决
如果在PyCharm中配置Python解释器时显示“conda executable is not found”错误消息,这意味着PyCharm无法找到您的Conda可执行文件。您可以按照以下步骤解决此问题: 1.方法一 确认Conda已正确安装。请确保您已经正确安装了Anaconda或Minicondaÿ…...

Thinkphp8 - 连接多个数据库
// 数据库连接配置信息connections > [mysql > [// 数据库类型type > mysql,// 服务器地址hostname > 127.0.0.1,// 数据库名database > thinkphp,// 用户名username > env(DB_USER, root),// 密码password >…...

Linux如何修改主机名(hostname)(亲测可用)
文章目录 背景Linux如何修改主机名(hostname)方法方法1. 使用 hostnamectl 命令示例 2. 编辑 /etc/hostname 文件注意事项 背景 我创建虚拟机的时候没设置主机名,现在显示localhost,有点尴尬😅: 需要重新设…...

银河麒麟等 Linux系统 安装 .net 3.1,net 6及更高版本的方法
确定 系统的版本。华为鲲鹏处理器是 Arm64位的。 于是到windows 官网下载对应版本 .net sdk 下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet 2.下载完成后,再linux 服务器 上进入到文件所在目录,建议全英文路径。 然后依次输入以下命令 …...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...