一、http与https的区别:

  1. http和https是两种通信方式
  2. http默认采用80作为通讯端口,对于传输采用不加密的方式,https默认采用443,对于传输的数据进行加密传输。
  3. https协议需要到CA申请证书
  4. HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。这样,就算数据被第三者所截获,但是由于数据是加密的,所以你的个人信息是安全的。这就是HTTP和HTTPS的最大区别。

二、原理详解

(1)、http传输原理讲解

HTTP协议是一种使用明文数据传输的网络协议。
我们通过一个简单的例子来描述:

上图应该是我们最期望看到的结果,两者得到了想要的信息。但是,这种情况真的是我们想的那样吗?答案很简单,不是的,因为产生了第三者!看下图:

本来客户端想发送密文a,但是内容被黑客截取,黑客篡改了内容,给服务端发送了密文c,结果就发生了变化。
为什么黑客可以得到呢?客户端向服务端发送的内容都是暴露的,发送的是什么,传输的就是什么,所以黑客可以很容易的得到内容,无需破解。

(2)、https传输原理讲解以及加密过程讲解

为了避免上图情况发生,我们引入了https(http+ssl,也就是在http外面加了一层ssl保护壳)

HTTPS协议可以理解为HTTP协议的升级,就是在HTTP的基础上增加了数据加密。在数据进行传输之前,对数据进行加密,然后再发送到服务器。
那么https是怎么加密的呢?下面我们介绍两种加密方式:对称加密和非对称加密
1、对称加密的原理:
原理图:

客户端在向服务端发送请求的时候采用了一种加密算法(图中的密钥$)对"密文"进行了加密,加密后的内容为:ASKJ@##!!,然后服务端获取到相关内容后通过相对应的解密算法可以将内容解密为"密文",从而保证了信息的安全性。但是这种方法真的安全吗?结果显然不是,假如第三方获取到密钥 $呢?看下图:

这相当于没有加密,因此使用同一个密钥是无法解决问题的,因此引入了非对称加密,使用不同的秘钥加解密。这就为对称加密的协商过程进行加密。

2、非对称加密
这里涉及到公钥私钥特点是私钥加密后的密文,只要是公钥,都可以解密,但是反过来公钥加密后的密文,只有私钥可以解密。私钥只有一个人有,而公钥可以发给所有的人。
看例子:

A(客户)想给B(服务器)发送一段文字,但是不想让别人看到,因此想使用非对称加密方法来加密这段文字,当然,B需要有一对公钥和私钥:
①、B将他的公钥发送给A
②、A用B给他的公钥加密这段文字,然后传给B
③、B用他的私钥解密A发过来的消息,这里要强调的是,只要B的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。
通过这几步,B就能成功收到A发送的信息,同时又达到了保密的目的。


在这里解释一下:

对于https加密的过程,我们首先介绍的对称加密,采用对称加密进行通信存在秘钥协商过程的不安全性,因此我们采用了非对称加密算法解决了对协商过程的加密,因此https是集对称加密和非对称加密为一体的加密过程

3、数字证书
为什么会说到数字证书?其实上面的过程存在一些问题,看下图:

客户端获取公钥最最直接的方法是服务器端将公钥发送给每一个客户端用户,但这个时候就出现了公钥被劫持的问题,如上图。那么如何安全的获取公钥,并确保公钥的获取是安全的? 那就需要用到终极武器了:SSL 证书(需要购买)和CA机构。

原理图如下:

服务器发送了一个SSL证书给客户端,SSL 证书中包含的具体内容有证书的颁发机构、有效期、公钥、证书持有者、签名,通过第三方的校验保证了身份的合法,解决了公钥获取的安全性

二、总结

HTTPS要使客户端与服务器端的通信过程得到安全保证,必须使用的对称加密算法,但是协商对称加密算法的过程,需要使用非对称加密算法来保证安全,然而直接使用非对称加密的过程本身也不安全,会有中间人篡改公钥的可能性,所以客户端与服务器不直接使用公钥,而是使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。这样通过这些机制协商出一个对称加密算法,就此双方使用该算法进行加密解密。从而解决了客户端与服务器端之间的通信安全问题。

参考博客: https://www.cnblogs.com/qiangxia/p/5261813.html

http 与 https 的区别以及加密详解相关推荐

  1. java加密算法入门(三)-非对称加密详解

    1.简单介绍 这几天一直在看非对称的加密,相比之前的两篇内容,这次看了两倍多的时间还云里雾里的,所以这篇文章相对之前的两篇,概念性的东西多了些,另外是代码的每一步我都做了介绍,方便自己以后翻阅,也方便 ...

  2. 微信公众号登录密码参数加密详解

    微信公众号登录密码pwd参数加密详解 前言 此参数的加密没有任何难度,适合小白练手学习. 网址:https://mp.weixin.qq.com/ 一.打开浏览器开始抓包 输入错误的账号密码,登录.然 ...

  3. RSA加密 — 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120316606 本文出自[赵彦军的博客] 文章目录 推荐 RSA 简介 RSA 常 ...

  4. HTTPS简介以及SSL协议详解

    HTTPS简介以及SSL协议详解 1.HTTPS简介 2.SSL协议介绍 2.1.SSL协议的功能 2.2.SSL协议在协议栈的位置 2.3.SSL协议组成 2.3.1.纪录协议的功能 2.3.2.S ...

  5. Android传输数据时加密详解

    Android传输数据时加密详解 ONE Goal , ONE Passion ! ------–MD5加密------- MD5即Message-Digest Algorithm 5(信息-摘要算法 ...

  6. AES加密 — 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/120285594 本文出自[赵彦军的博客] 文章目录 推荐 AES 简介 对称加密 ...

  7. IOS之RSA加密解密与后台之间的双向加密详解

    IOS之RSA加密解密与后台之间的双向加密详解 序言 因为项目中需要用到RSA加密,刚开始也是有点乱,这两天也整理的差不多了,希望能帮到大家. 这次先上代码,我想大部分人肯定是着急解决问题,所以不要废 ...

  8. mysql数据库表添加加密密码_数据库账号密码加密详解及实例

    数据库账号密码加密详解及实例 数据库中经常有对数据库账号密码的加密,但是碰到一个问题,在使用UserService对密码进行加密的时候,spring security 也是需要进行同步配置的,因为sp ...

  9. 玉米社:外链、反链、内链、友链的区别与联系详解

    外链.反链.内链.友链的区别与联系详解 1.外链 外链指从站外链向本站点某页面的链接,主要强调站外.我们常说的发外链,即在外部博客.论坛.自媒体等平台发布的带有自身网站链接的软文或者视频内容,但凡是从 ...

最新文章

  1. python逻辑运算符不懂_Python运算符之逻辑运算符
  2. Linux应用服务导致系统负载过高问题排查
  3. java result元素_Java JDBC 中获取 ResultSet 的大小
  4. nssl1163-小x游世界树【树形dp,二次扫描和换根法】
  5. 大数据聚类分析用于预测_多模态数据中的非负矩阵分解用于分割和标签预测
  6. Java 14 新功能介绍!
  7. 设计模式之不简单的工厂模式(三)
  8. python脚本打包rpm_python程序打包rpm包
  9. TwentyEleven暗色系主题实现透明
  10. JavaScript-No.01 JavaScript实现封装、继承、多态
  11. python从列表某位置开始读取_python如何读取列表中元素的位置?
  12. 38000词汇词根统计
  13. 【正点原子STM32连载】第五十二章 FPU测试(Julia分形)实验摘自【正点原子】MiniPro STM32H750 开发指南_V1.1
  14. C# 什么是Asp.net Core?和 .net core有什么区别?
  15. 双拼和五笔输入法键盘位浮动贴图,适合初学者使用
  16. iPhone和iPad等苹果设备自主更新Beta系统
  17. 卷积神经网络模型搭建(水果识别项目)
  18. 医学图像分析中的光密度参数
  19. 使用Synergy控制实现一套键盘鼠标控制多台电脑(windows+linux)
  20. (十一)fcntl函数的介绍和使用

热门文章

  1. pythoncv2模块详细介绍_python中cv2模块的安装方法
  2. 唐宇迪机器学习之离职预测
  3. 做游戏修改器的一点记录,有关大航海家3
  4. 三星在MWC大会上发布两款新的Gear智能手表
  5. 翻译--十年自学编程
  6. [Redis] 使用Redis限制短信发送次数和发送频率
  7. oracle over() 函数使用
  8. hibernate-jpa中criteriaBuilder[in] 用法大全
  9. 电讯行业业务发展人员及营业收款人员的工资绩效考核最新思路(暂缺)
  10. tp5.1 获取表里的所有数据_一个公式,将数据提取到指定工作表