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

embedded/2025/1/16 10:48:37/

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

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

目录

https-toc" style="margin-left:0px;"> 什么是https

中间人

数据加密与密钥

数据摘要 


https"> 什么是https

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

https://i-blog.csdnimg.cn/direct/baf312d45af34b1da5d3fe08cbe990d3.png" width="225" />

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

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

https://i-blog.csdnimg.cn/direct/594166a2b954408ea7a27aa233d91470.png" width="1200" />

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

https://i-blog.csdnimg.cn/direct/12a7bc61e5bd4545bb8a1d3287163119.png" width="1200" />

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

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

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

中间人

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

https://i-blog.csdnimg.cn/direct/0f6b356151934d25bcc00c6cf9d0961f.png" width="1200" />

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

https://i-blog.csdnimg.cn/direct/ad51335cda5b44dab834dbc4c5ffdeed.png" width="1200" />

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

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

https://i-blog.csdnimg.cn/direct/28692aeae8bc48b2af2aa42eb47efd02.png" width="951" />
        一般就是个人主机的请求要经过局域网内的路由器,然后经过中间商,最后到达服务器。

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

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

数据加密与密钥

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

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

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

https://i-blog.csdnimg.cn/direct/be920e25f9694db9b1c8d562ad7505b8.png" width="558" />

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

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

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

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

数据摘要 

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

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

https://i-blog.csdnimg.cn/direct/c59aa07135e84e5cbdc4f93ddacdee08.png" width="1200" />

https://i-blog.csdnimg.cn/direct/ca920004539e451b874cd0bc9a2e4362.gif" width="727" />

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


http://www.ppmy.cn/embedded/154377.html

相关文章

【SpringSecurity】SpringSecurity安全框架登录校验流程与登录配置示例

文章目录 SpringSecurity安全框架登录校验流程登录配置示例 SpringSecurity安全框架 Security 是一个能够为基于 Spring 的应用程序提供认证、授权以及保护免受攻击的安全框架。它是 Spring 生态系统的一部分,与 Spring 框架无缝集成。这些框架帮助开发者实现认证&…

【ArcGIS技巧】如何给CAD里的面注记导入GIS属性表中

前面分享了GIS怎么给田块加密高程点,但是没有分享每块田的高程对应的是哪块田,今天结合土地整理软件GLAND做一期田块的属性怎么放入GIS属性表当中。 1、GLAND数据 杭州阵列软件(GLand)是比较专业的土地整理软件,下载之…

[PAT 甲级] 1179 Chemical Equation (DFS)

​ 题目翻译(GPT): 1179 化学方程式 化学方程式是一种用符号和公式表示化学反应的方法,其中反应物在方程式的左侧,生成物在右侧。例如: CH₄ 2O₂ -> CO₂ 2H₂O 表示反应物为甲烷和氧气&#xff…

Oracle 23ai新特性:表值构造函数

随着 Oracle 数据库不断发展,新版本引入了许多增强功能和特性,以提高开发效率、简化 SQL 编写并优化性能。Oracle 23c 引入了表值构造器(Table Values Constructor),这一特性允许用户直接在 SQL 语句中定义和使用内联表…

如何使用策略模式并让spring管理

1、策略模式公共接口类 BankFileStrategy public interface BankFileStrategy {String getBankFile(String bankType) throws Exception; } 2、策略模式业务实现类 Slf4j Component public class ConcreteStrategy implements BankFileStrategy {Overridepublic String ge…

zookeeper 基本原理-单机模式、集群模式

单机模式 单机安装非常简单,只要获取到 Zookeeper 的压缩包并解压到某个目录如:C:\zookeeper-3.4.5\下,Zookeeper 的启动脚本在 bin 目录下,Windows 下的启动脚本是 zkServer.cmd。 在你执行启动脚本之前,还有几个基本…

自动生成数据:SQLark 让数据测试更高效

在新版本的业务系统开发过程中,需要生成大量的测试数据来模拟真实的业务场景,测试系统的稳定性和性能。今天分享一下我使用SQLark生成测试数据的经验,它能够提供8大类47个子类的数据规则,快速构建仿真测试数据环境,还支…

SQL 快速参考

SQL 快速参考 介绍 SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库管理系统的标准编程语言。它用于执行各种操作,如查询、更新、插入和删除数据库中的数据。本快速参考指南提供了SQL的基本语法和常用命…