http与https
1.HTTP
(HyperText Transfer Protocol),即超文本运输协议,是实现网络通信的一种规范(传输的是明文数据)
2.HTTPS = HTTP + SSL/TLS
流程图如下所示:
SSL
的实现这些功能主要依赖于三种手段:
- 对称加密:采用协商的密钥对数据加密
- 非对称加密:实现身份认证和密钥协商
- 摘要算法:验证信息的完整性
- 数字签名:身份验证
混合加密
在HTTPS
通信过程中,采用的是对称加密+非对称加密,也就是混合加密
1.服务端给客户端发送公钥
2.客户端生成“对称密钥”并用公钥加密
3.客户端发送加密后的“对称密钥,服务端用私钥解密,得到解密的“对称密钥”
摘要算法
网络传输过程中,数据有可能被篡改,并且黑客可以伪造身份发布公钥,如果你获取到假的公钥,那么混合加密也并无多大用处,你的数据扔被黑客解决(得到“对称密钥”)
因此,在上述加密的基础上仍需加上完整性,实现这一功能则是摘要算法、
它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串,就好像是给这段数据生成了一个数字“指纹”
摘要算法保证了“数字摘要”和原文是完全等价的。
所以,我们只要在原文后附上它的摘要,就能够保证数据的完整性
数字签名
数字签名能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名
原理其实很简单,就是用私钥加密,公钥解密
签名和公钥一样完全公开,任何人都可以获取。但这个签名只有用私钥对应的公钥才能解开,拿到摘要后,再比对原文验证完整性,就可以像签署文件一样证明消息确实是你发的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
2021-03-26 react 响应式数据
2021-03-26 mixin(混入)
2021-03-26 vue插槽
2021-03-26 mvc与mvvm的设计思想
2021-03-26 :last-child 和 :last-of-type
2020-03-26 npm的一些细节