【HTTPS】对称加密和非对称加密
HTTPS 是什么
HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全)
当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐
运营商劫持
下载⼀个“天天动听“:
- 未被劫持的效果,点击下载按钮,就会弹出天天动听的下载链接

- 已被劫持的效果,点击下载按钮,就会弹出 QQ 浏览器的下载链接


即使运营商不劫持,如果被黑客盯上了,也是可能会对你的信息安全造成一些影响的
有些商场、饭店会提供 WiFi
- 你连他们的 WiFi,你的请求就要经过他的路由器设备
- 你能连,黑客就也能连,黑客就可能把路由器给黑了
- 黑客可能用自己的设备伪造一个“商场 WiFi”
一旦你的数据经过了黑客的设备,并且没有加密,那就非常危险了。尤其是“各种密码”
加密
解决安全问题,最核心的要点,就是“加密”。黑客领域的攻防,都是“相对”的概念,这是一个对抗的过程。但是可以做到,即使数据被黑客拿到了,他也解析不了/无法篡改,也能起到安全的效果
- 你加密的数据,理论上来说,也可能被黑客破解,但加密的成本很低,但破解的成本很高
- 只要破解成本超出了要保护的数据价值本身,就是安全的
引入加密,是保证数据安全的有效手段
密码学中的几个重要概念:
明文:要传输的真实数据,要表达的实际的意思
密文:针对明文加密后,得到的结果。往往是不直观的,不易理解的
密钥:加密和解密过程中的关键道具
对称加密:加密和解密用的是同一个密钥
非对称加密:加密和解密用的不是同一个密钥,这两个密钥 k1 和 k2是成对的
- 可以使用
k1加密,k2解密 - 可以使用
k2加密,k1解密
两个密钥,可以一个公开出去,称为“公钥”,另一个自己保存,称为“私钥”
手里只有一把的话,是无法知道另一把是什么的(是有一定的数学原理的)
HTTPS 工作过程(面试)
只要针对 HTTPS 的数据进行解密了,就能够得到 HTTP 格式的数据
上述的运营商劫持,无论是修改 referer 还是修改返回的链接(body),本质上都是明文传输惹的祸。需要引入加密,对上述传输的数据进行保护,主要就是要针对 header 和 body 进行加密
1. 引入对称加密
通过对称加密的方式,针对传输的数据进行加密操作,这样网络上传输的就是密文了 
-
对称加密的时候,客户端和服务器需要使用同一个密钥
-
不同的客户端需要使用不同的密钥
- 如果所有的客户端的密钥都一样,加密就形同虚设,黑客就很容易拿到密钥
- 这就意味着,每个客户端连接到服务器的时候,都需要自己生成一个随机的密钥,并且把这个密钥告知服务器。(也不一定非得是客户端生成,服务器生成也行,但也是要告诉客户端的)
问题的关键: 密钥需要传输给对方,一旦黑客拿到了密钥,意味着加密操作就没意义了
- 这样即使你传输的是密文,但黑客也能解密
2. 引入非对称加密
使用非对称加密主要的目的是为了加密“对称密钥”,确保对称密钥的安全性
不能使用非对称加密针对后续传输的各种
header、body等进行加密,而是只能对对称加密的密钥进行加密
- 因为非对称加密的加密解密成本(消耗的 CPU 资源)远远高于对称加密
- 少来少去的用点还可以,但是如果大规模的使用,就难以承担了

- 此处就让服务器持有私钥(只有服务器知道);客户端持有公钥(黑客也知道)
- 客户端就可以使用公钥,对生成的对称密钥进行加密
- 黑客虽然有公钥,但是对密钥加密的密文只有通过私钥才能解密,黑客拿不到私钥,也就无法对这个数据解密,也就拿不到
888888对称密钥了 - 只要
888888安全到达服务器,后续服务器和客户端之间就可以使用888888作为对称加密的密钥,此时黑客就无法破解后续的数据了
客户端向服务器要公钥和通过公钥传输对称加密的密钥的两步操作就是 SSL 内部完成的操作。使用 HTTPS 的时候,磁层也是 TCP,先进行 TCP 三次握手,TCP 连接打通之后,就要进行 SSL 的握手了(交换密钥的过程)。后面才是真正的传输业务数据。(完整的 HTTPS 的请求/响应)
此处公钥和私钥可以这样理解
- 有些老的楼里带有信箱
- 你的手里有信箱钥匙(私钥),邮递员手里有锁头(公钥)
可以让服务器生成公钥私钥。私钥就只有服务器自己知道,公钥可以告诉任何人
- 客户端要传输数据的时候,就向服务器要公钥
上述操作,其实仍然存在严重的漏洞,黑客仍然有办法破解掉其中的加密操作
相关文章:
【HTTPS】对称加密和非对称加密
HTTPS 是什么 HTTPS 是在 HTTP 的基础上,引入了一个加密层(SSL)。HTTP 是明文传输的(不安全) 当下所见到的大部分网站都是 HTTPS 的,这都是拜“运营商劫持”所赐 运营商劫持 下载⼀个“天天动听“&…...
MySQL中的LIMIT与ORDER BY关键字详解
前言 众所周知,LIMIT和ORDER BY在数据库中,是两个非常关键并且经常一起使用的SQL语句部分,它们在数据处理和分页展示方面发挥着重要作用。 今天就结合工作中遇到的实际问题,回顾一下这块的知识点。同时希望这篇文章可以帮助到正…...
Java 编码系列:集合框架(List、Set、Map 及其常用实现类)
引言 在 Java 开发中,集合框架是不可或缺的一部分,它提供了存储和操作一组对象的工具。Java 集合框架主要包括 List、Set 和 Map 接口及其常用的实现类。正确理解和使用这些集合类不仅可以提高代码的可读性和性能,还能避免一些常见的错误。本…...
Go进阶概览 -【7.2 泛型的使用与实现分析】
7.2 泛型的使用与实现分析 泛型是Go 1.18引入的概念,在引入这个概念前经过了好几年的考量最终才将这这个特性加进去。 泛型在多种语言中都是存在的,比如C、Java等语言中都有泛型的概念。 本节我们将针对泛型的使用、实现原理进行整体的讲解。 本节代…...
罗德岛战记游戏源码(客户端+服务端+数据库+全套源码)游戏大小9.41G
罗德岛战记游戏源码(客户端服务端数据库全套源码)游戏大小9.41G 下载地址: 通过网盘分享的文件:【源码】罗德岛战记游戏源码(客户端服务端数据库全套源码)游戏大小9.41G 链接: https://pan.baidu.com/s/1y0…...
AI+教育|拥抱AI智能科技,让课堂更生动高效
AI在教育领域的应用正逐渐成为现实,提供互动性强的学习体验,正在改变传统教育模式。AI不仅改变了传统的教学模式,还为教育提供了更多的可能性和解决方案。从个性化学习体验到自动化管理任务,AI正在全方位提升教育质量和效率。随着…...
WebServer
一、服务器代码 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <unistd.h> #define PORT 80 #define BUFFER_SIZE 1024 void ha…...
java项目之基于spring boot的多维分类的知识管理系统的设计与实现源码
项目简介 基于spring boot的多维分类的知识管理系统的设计与实现实现了以下功能: 基于spring boot的多维分类的知识管理系统的设计与实现的主要使用者管理员可以管理用户信息,知识分类,知识信息等,用户可以查看和下载管理员发布…...
go的结构体、方法、接口
结构体: 结构体:不同类型数据集合 结构体成员是由一系列的成员变量构成,这些成员变量也被称为“字段” 先声明一下我们的结构体: type Person struct {name stringage intsex string } 定义结构体法1: var p1 P…...
力扣第一题——删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1)额外空间的条件下完成。 示例 1&#x…...
Tuxera NTFS for Mac 2023绿色版
在数字化时代,数据的存储和传输变得至关重要。Mac用户经常需要在Windows NTFS格式的移动硬盘上进行读写操作,然而,由于MacOS系统默认不支持NTFS的写操作,这就需要我们寻找一款高效的读写软件。Tuxera NTFS for Mac 2023便是其中…...
LeetCode[中等] 155. 最小栈
设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...
Python青少年简明教程目录
Python青少年简明教程目录 学习编程语言时,会遇到“开头难”和“深入难”的问题,这是许多编程学习者都会经历的普遍现象。 学习Python对于青少年来说是一个很好的编程起点,相对容易上手入门,但语言特性复杂,应用较广&…...
Revit学习记录-版本2018【持续补充】
将墙面拆分并使用不同材料 【修改】>【几何图形】>【拆分面】(SF), 然后再使用【修改】>【几何图形】>【填色】(PT)进行填充 楼板漏在墙外 绘制楼板时最好选择墙体绘制,如果标高上不显示墙体,可以先选…...
深度学习01-概述
深度学习是机器学习的一个子集。机器学习是实现人工智能的一种途径,而深度学习则是通过多层神经网络模拟人类大脑的方式进行学习和知识提取。 深度学习的关键特点: 1. 自动提取特征:与传统的机器学习方法不同,深度学习不需要手动…...
leetcode232. 用栈实现队列
leetcode232. 用栈实现队列 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾 int pop() 从队列的开头移除并返回元…...
智慧火灾应急救援航拍检测数据集(无人机视角)
智慧火灾应急救援。 无人机,直升机等航拍视角下火灾应急救援检测数据集,数据分别标注了火,人,车辆这三个要素内容,29810张高清航拍影像,共31GB,适合森林防火,应急救援等方向的学术研…...
eureka.client.service-url.defaultZone的坑
错误的配置 eureka: client: service-url: default-zone: http://192.168.100.10:8080/eureka正确的配置 eureka: client: service-url: defaultZone: http://192.168.100.10:8080/eureka根据错误日志堆栈打断电调试 出现两个key,也就是defaultZone不支持snake-c…...
统信服务器操作系统【d版字符系统升级到dde图形化】配置方法
统信服务器操作系统d版本上由字符系统升级到 dde 桌面系统的过程 文章目录 一、准备环境二、功能描述安装步骤1. lightdm 安装2. dde 安装 一、准备环境 适用版本:■UOS服务器操作系统d版 适用架构:■ARM64、AMD64、MIPS64 网络:连接互联网…...
学习IEC 62055付费系统标准
1.IEC 62055 国际标准 IEC 62055 是目前关于付费系统的唯一国际标准,涵盖了付费系统、CIS 用户信息系统、售电系统、传输介质、数据传输标准、预付费电能表以及接口标准等内容。 IEC 62055-21 标准化架构IEC 62055-31 1 级和 2 级有功预付费电能表IEC 62055-41 STS…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建
制造业采购供应链管理是企业运营的核心环节,供应链协同管理在供应链上下游企业之间建立紧密的合作关系,通过信息共享、资源整合、业务协同等方式,实现供应链的全面管理和优化,提高供应链的效率和透明度,降低供应链的成…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
