http和https的区别

一、http

超文本传输协议 HTTP 被用于 Web 浏览器和网站服务器之间传递信息,HTTP 以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了 Web 浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息。因此,HTTP 不适合传输敏感信息,比如:资金账户、密码等,默认端口号是80,是TCP/IPhttp

二、https

因为http是明文传输,所以容易被截取修改,因此需要一种加密算法来把传输的信息进行加密。加密算法有对称加密和非对称加密。https的默认端口号是443,是TCP/IPSSLhttps

1.对称加密

对称加密就是产生一个密钥,可以用其加密也可以用其解密,通俗来讲就是服务端通过一个密钥,将要传输的信息通过算法来进行加密,并且在第一次的传输过程中将这个密钥传递给客户端,客户端通过这个密钥来解密,获取到传递的内容,然后以后的传输都是通过这种加密方式,就算第三方窃取到了传递的数据,也无法解密,这个密钥也称为公钥。但是这种加密有一个问题,那就是如果在第一次传输密钥的过程中,就窃取到了密钥,那么这个加密形如虚设,第三方也可以拿这个密钥来进行解密加密。常见的加密算法有DES、3DES、AES、Blowfish等

2.非对称加密

非对称加密就是产生一对密钥,一个用于加密,一个用于解密,称为公钥key1和私钥key1,如果用公钥key1加密,那么就只能用私钥key1解密,如果用私钥key1加密,那么就只能用公钥key1解密。通俗来讲就是服务端生成公钥key1和私钥key1,服务端把公钥key1给客户端,然后客户端通过这个公钥key1加密信息传递给服务端,服务端通过私钥key1进行解密,但是有一个问题,服务端通过公钥key1加密的信息,客户端因为没有私钥key1,所以不能解密,所以这个时候可以结合对称加密。客户端可以生成一个公钥key2,然后通过公钥key1将这个公钥key2进行加密传递给服务端,服务端用私钥key1解密得到公钥key2,然后后续就通过这个公钥key2来进行对称加密传输,因为这个公钥key2是客户端通过公钥key1加密给服务端的,所以第三方并不知道这个公钥key2。但是这种方式也有一个弊端,那就是被篡改,就是在服务端第一次给客户端公钥key1的时候,第三方把公钥key1保存起来,然后第三方生成一个公钥key3和私钥key3,然后将公钥key3给客户端,客户端并不知道这个公钥key3是被篡改的,也用公钥key3来加密公钥key2,然后第三方窃取到这个加密后的公钥key2,通过私钥key3进行解密就可以拿到公钥key2,进行保存,然后再用之前保存的公钥key1来加密给服务端,这样第三方也能获取到公钥key2。不能理解的话就画图来表示,整个逻辑很简单的。

3.CA证书

可以看出非对称加密结合对称加密还是挺好的,主要的缺陷是被第三方篡改公钥key1,所以直接找一个权威机构来帮忙传递公钥key1,以此来保证公钥key1不会被篡改。具体流程是首先就是服务器把服务器地址和公钥key1以及money一起给权威机构,权威机构也会生成一对公钥key4和私钥key4,然后将服务器地址,证书签发机构,私钥key4加密后的公钥key1,以及私钥key4加密后的证书签名等等弄成一个CA证书,整个CA证书任何人都能读到其中的信息,因为公钥key4是公布于全世界的,但是呢,你改不了,因为你没有私钥key4,你改了之后没法加密,用自己的私钥加密的话,公钥key4就不能解密,并且证书签名的算法是公开的,客户端可以根据服务器地址 + CA公钥key4 + 公钥key1结合证书签名算法得到的结果来比对收到的证书签名,判断收到的CA证书是否一致,不一致表示被篡改了,现在第三方已经不能篡改公钥key1了,后续的操作就和上面的一样了

相关推荐
ps酷教程34 分钟前
HttpPostRequestDecoder源码浅析
java·http·netty
汤愈韬1 小时前
双向NAT
网络·网络协议·网络安全·security·huawei
*才华有限公司*1 小时前
RTSP视频流播放系统
java·git·websocket·网络协议·信息与通信
寻星探路2 小时前
【Python 全栈测开之路】Python 基础语法精讲(一):常量、变量与运算符
java·开发语言·c++·python·http·ai·c#
栗子叶3 小时前
网页接收服务端消息的几种方式
前端·websocket·http·通信
Filotimo_5 小时前
桥接服务概念
网络协议·网络安全·信息与通信
镜中人★5 小时前
408计算机网络考纲知识点(更新中)
网络·网络协议·计算机网络
禾叙_6 小时前
【netty】Netty之TCP链接
网络·网络协议·tcp/ip
半路_出家ren6 小时前
17.python爬虫基础,基于正则表达式的爬虫,基于BeautifulSoup的爬虫
网络·爬虫·python·网络协议·正则表达式·网络爬虫·beautifulsoup
栗子叶6 小时前
SSE、长轮询与 WebSocket 连接资源对比及 Spring Boot 配置指南
spring boot·websocket·网络协议