【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…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
【Java学习笔记】Arrays类
Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...