linux网络 | https前置知识 | 数据加密与解密、数据摘要

        前言:本节内容讲述https的相关内容。 https博主会着重讲解https如何让一个请求和一个响应能够安全的进行交互。 https博主将用两篇文章进行讲解。本篇是两篇中第一篇。会把http的安全问题引出来, 然后说一下https的基本解决方法。 下面废话不多说, 开始我们的学习吧!

        ps:https其实就是http上面的延申, 所以建议友友们最好学习完http再来学习本节内容哦。

目录

 什么是https

中间人

数据加密与密钥

数据摘要 


 什么是https

        看https之前, 我们先来回忆一下这张图:

        我们历史上写的套接字, 其实的都是利用操作系统给我们提供的系统调用接口。 然后接口的上面的部分, 其实就是应用层, 我们以前写的代码都是应用层的代码。 然后下面的三层是系统部分, 解决的是数据传输的问题。 

        当我们发送数据的时候, 其实是将数据自上而下交付, 然后交给对面。 对面再自底向上将数据一层一层交付。

        在这个过程中, 应用层下面的许多层都能拿到这个数据, 所以这是不安全的。 那么应用层为了安全就要在下面放上一个软件曾ssl加密解密层。 这样以后通信双方应用层下面的各层都不知道应用层通信了什么。

        上面的这个HTTP协议和软件曾加密解密层合起来, 就叫做https。

如果一个攻破的成本 > 攻破后的收益, 那么就有可能不安全。 ssl协议是有权威的官方加密解密方案的。 但是有权威代表用的人多, 就意味着被破解后的收益大, 也就意味着有更多的黑客来攻破这套方案。 所以, 对于官方的人来说, 隔一段时间就要对这套方案进行更新和维护。 所以, 没有百分百安全的协议,只是算力的问题。

        HTTP没有加密, 是明文传送。 而HTTPS加密了, 是密文传送。加密就是把明文变密文。解密就是把密文变成明文。 一般我们加密解密的过程都需要很多辅助的数据, 这些数据我们一般称为密钥。

中间人

        接下来我们要讲解一种叫做中间人的东西,我们的浏览器在访问某些大型服务器的时候, 其实都要经过一个叫做运行商的东西。 浏览器向服务器发送请求,要经过运营商,然后服务器向浏览器返回响应,也要经过运营商。

        但是,我们在访问浏览器的时候可能会遇到一种情况,就是我们想要下载一个软件,比如说我们想要下载qq。但是我们点击下载,下载完成后发现我们下载的其实是应用宝,这个其实就是运营商的原因。

        如上图, 就是一开始我们向服务器说下载qq,然后服务器响应了一个页面,里面有qq的各种信息。然后我们再请求下载,然后服务器就响应了一个qg的连接。但是经过运营商的时候,这个连接就被替换成了应用宝的连接。 我们点击下载, 也就只能是应用宝了。

        对于运营商来说,可以这么做, 如果是和服务器达成了协议, 那么也可以理解。但是运营商的这种截取请求和响应的这种中间人的攻击却很危险。如果被其他人利用, 就会造成信息泄露。


        一般就是个人主机的请求要经过局域网内的路由器,然后经过中间商,最后到达服务器。

        而既然要经过路由器,那么其实路由器也是能拿到个人主机内做的请求的,如果这些请求是明文的,那么在这客户端与服务器中间的这些设备, 都能看到我们的请求。

        那么如果我们连接的不是路由器的网络,而是别人的无线,或者学校的网络,那么别人或者学校,就能拿到我们的请求。我们的信息就暴露了

数据加密与密钥

        为了我们的信息的保密性, 就要对数据进行加密, 常见的加密方式有两种,对称加密和非对称加密。

  •         对称加密就是只用一个密钥,对称加密的算法加密速度快, 加密效率高。
  •         非对称加密就是使用两种密钥, 一种叫做私钥, 一种叫做公钥。

        对称加密好说, 主要是非对称加密, 下面是非对称加密的方式:

        就是对于一串报文,如果是明文,就可以用A密钥加密,然后发送给别人,别人拿着B解密。         然后B呢, 也可以拿着一串明文加密,然后由密钥A进行解密。这就是非对称密钥。 以后呢,用A加的密,就必须用B来解密, 用B加的密, 就必须用A来解密。

         我们对于A和B就必须把其中一个进行公开,另一个私有。 公开的那个就叫做公钥,然后私有的那个就叫做私钥。

        这种做法特点是: 用公钥加密,这个世界上只能由拥有私钥的人来解密!!!!也就是说只能由一个人或者一个组织来解密。

        只是, 这种非对称加密有一个缺点, 就是运行速度非常慢。

数据摘要 

        数据摘要就是将原本的数据, 转化成固定长度的, 有极低概率发生冲突的字符串。这种字符串具有唯一性。这种数据摘要技术是一种Hash算法,最典型的就是MD5。
        未来我们对一个数据如果一开始形成的数据摘要是一串字符串md_str:XXXXXXXXXXX。
        然后如果这个数据被改了一个很小的字符,那么新形成的字符串就会和原本字符串相差非常大,假如是:md _str:YYYYYYYYYYYYYYY。所以想要判断这个字符串是否被修改过, 只需要判断一下这两个数据摘要是否相同。
        形成的这个字符串,我们就叫做数据指纹。未来我们的登录密码和账号, 是不是任意两个用户, 都不可能完全相同。通常情况下, 账号就一定不能够相同。这个就是用到了数据指纹。 

        另一个用到数据摘要的例子就是我们上传文件, 我们有时候上传文件, 是不是第一次上传的时候有时候很慢, 但是第二次上传就非常快。 就是因为我们第一次上传文件时数据指纹已经入库, 第二次上传同样的文件会发现文件有相同的数据指纹, 这个时候就直接不用重新上传了, 直接根据数据指纹找到上次上传的文件在服务器里面的位置, 然后用一个软连接指向就行了。

——————以上就是本节全部内容哦, 如果对友友们有帮助的话可以关注博主, 方便学习更多知识哦!!!   

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小目标检测难点分析和解决策略

目录 一、背景 二、检测难点 三、主流改进方法 3.1 基于改进数据增强的小目标检测算法 3.1.1 监督数据增强方法 3.1.2 无监督数据增强方法 3.2. 基于改进特征提取的小目标检测算法 3.2.1. 扩张卷积 3.2.2. 特征增强 3.2.3. 多尺度特征提取 3.2.4. 注意力机制 3.3 基…

Java 继承

目录 1. 继承概述 2. 继承好处 3. 继承格式 4. 继承规定 5. debug 调试 6. 方法重写 6.1 概述 6.2 规定 7. super 关键字 7.1 概述 7.2 使用 7.3 在构造器中使用 8. 子类对象实例化的全过程 9. 练习 1. 继承概述 举例:Person 类中有name&#xff0c…

CES Asia 2025科技盛宴,AI智能体成焦点

2025第七届亚洲消费电子技术展(CES Asia赛逸展)将在北京拉开帷幕,AI智能体有望成为展会的核心亮点。 深圳市人工智能行业协会发文表示全力支持CES Asia 2025(赛逸展),称其为人工智能领域的创新发展提供了强…

HTMLHTML5革命:构建现代网页的终极指南 - 0. 课程目录设计

结构清晰,层层递进 课程从基础知识(如HTML学前必知)开始,逐步深入到高级应用(如PWA配置和WebApp优化)。每个模块都有明确的目标,适合零基础学员逐步掌握HTML。 覆盖范围广 这套课程涵盖了HTM…

大型语言模型(LLM)中的tokens是什么

大型语言模型(LLM)中的tokens是什么 在大型语言模型(LLM)中,tokens是文本处理的基本单位,它可以是一个单词、一个字符、一个标点符号,或者是一个特殊的标记。以下是关于tokens的详细介绍及举例: 一、tokens的定义和作用 定义:tokens是将文本分割成的一个个有意义的…

嵌入式C语言:二维数组

目录 一、二维数组的定义 二、内存布局 2.1. 内存布局特点 2.2. 内存布局示例 2.2.1. 数组元素地址 2.2.2. 内存布局图(简化表示) 2.3. 初始化对内存布局的影响 三、访问二维数组元素 3.1. 常规下标访问方式 3.2. 通过指针访问 3.2.1. 指向数…

Java进阶-在Ubuntu上部署SpringBoot应用

随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一。Java 作为一种跨平台的编程语言,具有广泛的应用场景。本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,包括环境准备、应用发布、配置反向代理&#…

node-sass@4.14.1报错的最终解决方案分享

输入npm i全安装文件所需的依赖的时候,博主是使用sass去书写的,使用的是node-sass4.14.1和sass-loader7.3.1的版本的,安装的时候老是出现错误, node-sass4.14.1版本不再被支持的原因 node-sass 是一个基于 LibSass 的 Node.js 绑…

Java设计模式 —— 【行为型模式】命令模式(Command Pattern) 详解

文章目录 模式介绍优缺点适用场景结构案例实现注意事项 模式介绍 有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。此时希望用一种松耦合的方式来设计程序,使得请求发送者和请求接收者能够消除彼此…

Vue3初学之组件通信

一起进行学习: 在 Vue 3 中,组件通信是一个非常重要的概念,它决定了如何在父子组件之间、兄弟组件之间以及跨层级组件之间传递数据和事件。以下是 Vue 3 中常见的组件通信方式: 父子组件通信 1.1 父组件向子组件传递数据&#x…

springBoot整合ELK Windowsb版本 (elasticsearch+logstash+kibana)

springBoot整合ELK Windowsb版本 【elasticsearchlogstashkibana】 下载软件启动服务1、elasticsearch2、kibana3、logstash 集成springboot1、添加依赖2、在logback.xml添加相关配置3、修改logstash 配置4、重启logstash 最后测试 下载软件 elasticsearch 官网 https://www.…

选择器css

1.a标签选择 // 选中所具有herf 的元素 [herf] {color: skyblue; } // 选中所具有herfhttps://fanyi.youdao.com/ 的元素 [herf$"youdao.com"] {color:pink; } // 按此顺序书写 link visited hover active // 未访问状态 a:link {color:orange } // 访问状态 a…

数据结构大作业——家谱管理系统(超详细!完整代码!)

目录 设计思路: 一、项目背景 二、功能分析 查询功能流程图: 管理功能流程图: 三、设计 四、实现 代码实现: 头文件 结构体 函数声明及定义 创建家谱树头结点 绘制家谱树(打印) 建立右兄弟…

TDC-GP30 Data Sheet

4 特殊服务功能 4.1 看门狗 系统复位后,GP30的看门狗功能被启用。大约13秒后,如果看门狗计时器在此之前未被清除,则看门狗会重置芯片。这通常由固件使用clrwtd命令完成,以便在固件因任何原因未清除看门狗时,系统会发生复位。看门狗时间基于一个未稳定的10 kHz内部振荡器时…

【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程

有问题请留言或私信 步骤 下载项目源码:项目源码 解压项目源码到本地 打开IDEA 左上角:文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件,点击确定,根据图示步骤继续导入项目 查看项目目录&#xff…

基于单片机的指纹密码锁

【摘要】 本设计是一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心同时结合ZFM-60指纹模块实现录取指纹并存储指纹数据的功能,并且通过HS12864-15C液晶显示比对流程及比对结果,该指纹电子密码锁通过直流继电器与发光二极管…

2025-1-9 QT 使用 QXlsx库 读取 .xlsx 文件 —— 导入 QXlsx库以及读取 .xlsx 的源码 实践出真知,你我共勉

文章目录 1. 导入QXlsx库2. 使用 QXlsx库 读取 .xlsx 文件小结 网上有很多教程,但太费劲了,这里有个非常简便的好方法,分享给大家。 1. 导入QXlsx库 转载链接 :https://github.com/QtExcel/QXlsx/blob/master/HowToSetProject.md…

QT + Opencv 实现灰度模板匹配

QT Opencv 实现灰度模板匹配 实现思路 1.模板创建代码思路 1 初始化和准备: 使用 cv::buildPyramid 函数构建图像金字塔。图像金字塔是一种多分辨率表示,每个层级的图像分辨率逐步降低。 调整 m_TemplData 的大小以匹配图像金字塔的层级数。 计算每…

深度学习知识点:LSTM

文章目录 1.应用现状2.发展历史3.基本结构4.LSTM和RNN的差异 1.应用现状 长短期记忆神经网络(LSTM)是一种特殊的循环神经网络(RNN)。原始的RNN在训练中,随着训练时间的加长以及网络层数的增多,很容易出现梯度爆炸或者梯度消失的问…

git提交

基本流程:新建分支 → 分支上开发(写代码) → 提交 → 合并到主分支 拉取最新代码因为当前在 master 分支下,你必须拉取最新代码,保证当前代码与线上同步(最新),执行以下命令:bashgit pull orig…