javaEE-7.网络原理-HTTPS

ops/2025/2/4 3:37:55/

目录

1.概念:

2.加密形式

3.HTTPS工作流程

1).引入对称加密

2).引入非对称加密


1.概念:

https是http的加密版.  HTTPS : HTTP+ SSL(加密)

HTTP属于明文传输,在传输过程中,可能会存在一定的风险,HTTPS对传输的内容进行了加密处理.

 HTTPS除了对内容进行密文传输,别的和HTTP是一样的.

2.加密形式

要想加密,还要有进行加密或解密的密钥,对传输的内容进行加密,加密形式有 对称加密 和非对称加密 .

对称加密:加密和解密的密钥是同一个.

非对称加密:加密和解密的密钥是不同.是两个密钥 k1 ,k2 ,且是成对的,k1用来加密,k2 就用来解密,两个密钥一个公开出来,称为"公钥",另一个自己保存,为"私钥".

3.HTTPS工作流程

引入加密,对传输数据进行保护,主要是对refener和body进行加密.

1).引入对称加密

针对要传输的refener/body 进行对称加密,

https://i-blog.csdnimg.cn/direct/360b479c525943f6af1575a73163d0c1.png" width="935" />

注意:1.对称加密的时候,客户端和服务端要使用同一个密钥.

        2.不同的客户端,要使用不同的密钥.

这就表示每一个客户端都要自己生成一个密钥,还有告知服务端,但在传输的过程中,势必要将密钥传输给服务端,这就有可能让黑客获取到密钥,从而破解出要传送的内容.加密就没有意义了.

为了不让黑客获取到密钥,还要对密钥进行加密.

2).引入非对称加密

通过非对称加密,对 对称加密使用的 密钥进行秘文传输.

不直接使用非对称加密的方式对传输的内容进行加密,是因为非对称加密的使用成本较高,消耗CPU的资源远高于对称加密.

此时,服务器有"公钥"和"私钥",客户端发送请求,获取服务器的"公钥","公钥"是可以明文显示的,黑客知道了也没事.只要"私钥"仅让服务器知道就行了.

客户端获取到公钥后,对要传输的密钥进行加密https://i-blog.csdnimg.cn/direct/e29b9f7256fa455c96658e427a4386a9.png" width="1416" />,再传送给服务端,服务端收到数据后,再通过私钥对加密内容进行解密,就可以获取到数据内容了.

https://i-blog.csdnimg.cn/direct/e853feaa83884114b14153c4118244b1.png" width="1356" />

但这样传输,中间还存在着很大的安全问题.

若中间人更加聪明,当服务器返回非对称加密的公钥key1 时,黑客对公钥信息进行拦截,自己创造出一对新的非对称密钥,公钥key3,私钥key4,将自己的公钥key3返回给客户端,此时,就会产生以假乱真的现象.

https://i-blog.csdnimg.cn/direct/6e30a51aae294d28a9616a4c14dbbf6f.png" width="1556" />

针对上述现象,最关键的解决方法是客户端对收到了公钥进行检验.判断这个公钥是否为服务端发送的真的公钥.

要求服务器提供一个"证书",这个证书由服务器申请,特定的公正机构发放.

证书中包含的内容有: 服务器域名,证书有效时间,服务器公钥,公正机构相关信息等,还有一个证书的签名.

证书的签名 实际上就是证书中别的内容经过一系列的计算得到的一个校验值,这个校验值再通过公正机构提供的私钥进行加密的结果.

客户端会先向服务器获取证书,获取到证书后,经过一系列算法,计算出证书的 校验和;

再使用系统内置的公正机构公钥 对证书的签名进行解密,得到另一个校验和,

将这两个校验和进行对比,若一样,则表示证书没有被第三方修改,若不一致,则证书存在安全问题,就能分辨真伪了.

这样就能真正的阻止第三方修改/监听内容的问题了.

https://i-blog.csdnimg.cn/direct/b650568dd7274c778cb3d4ef072463c2.png" width="604" />


http://www.ppmy.cn/ops/155463.html

相关文章

MATLAB中fetchOutputs函数用法

目录 语法 说明 示例 在后台运行函数 fetchOutputs函数的功能是从在后台运行的函数中检索结果。 语法 [Y1,...,Ym] fetchOutputs(F) [Y1,...,Ym] fetchOutputs(F,UniformOutputfalse) 说明 [Y1, ..., Ym] fetchOutputs(F) 从 Future 数组 F 中检索出 m 个结果。 F 中…

在AWS上使用KMS客户端密钥加密S3文件,同时支持PySpark读写和Snowflake导入

现有AWS EMR集群上运行PySpark代码,可以读写S3上的数据文件,Snowflake数据仓库也需要导入S3上的文件到表。现在要用AWS KMS有客户端密钥加密S3上的文件,同时允许PySpark代码,可以读写S3上的数据文件,Snowflake数据仓库…

即梦(Dreamina)技术浅析(四):生成对抗网络

即梦(Dreamina) 的生成对抗网络(GAN,Generative Adversarial Network)技术是其核心功能之一,用于生成高质量的图像、文本和视频内容。GAN 是一种深度学习模型,由生成器(Generator)和判别器(Discriminator)两部分组成,通过对抗训练的方式不断提升生成内容的质量。 …

ChatGPT与GPT的区别与联系

ChatGPT 和 GPT 都是基于 Transformer 架构的语言模型,但它们有不同的侧重点和应用。下面我们来探讨一下它们的区别与联系。 1. GPT(Generative Pre-trained Transformer) GPT 是一类由 OpenAI 开发的语言模型,基于 Transformer…

架构技能(四):需求分析

需求分析,即分析需求,分析软件用户需要解决的问题。 需求分析的下一环节是软件的整体架构设计,需求是输入,架构是输出,需求决定了架构。 决定架构的是软件的所有需求吗?肯定不是,真正决定架构…

Python 网络爬虫实战:从基础到高级爬取技术

📝个人主页🌹:一ge科研小菜鸡-CSDN博客 🌹🌹期待您的关注 🌹🌹 1. 引言 网络爬虫(Web Scraping)是一种自动化技术,利用程序从网页中提取数据,广泛…

UI线程用到COM只能选单线程模型

无论用不用UI库,哪怕是用Win32 API手搓UI,UI线程要用COM的话,必须初始化为单线程单元(STA),即CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED);,不能用MULTITHREADTHREADED。 实际上,很多(WPF等)UI库若…

C++学习——认识和与C的区别

目录 前言 一、什么是C 二、C关键字 三、与C语言不同的地方 3.1头文件 四、命名空间 4.1命名空间的概念写法 4.2命名空间的访问 4.3命名空间的嵌套 4.4命名空间在实际中的几种写法 五、输入输出 5.1cout 5.2endl 5.3cin 总结 前言 开启新的篇章,这里…