本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
对称加密
对称加密其实就是通过同一个 “密钥” , 把明文加密成密文, 并且也能把密文解密成明文.
非对称加密
公钥加密,私钥解密
首先是服务器自己生成一个公钥私钥对,公钥就公开出去,谁都可以获取(黑客也可以拿到),私钥自己保存(不让别人知道) 客户端拿到公钥之后,使用公钥对对称密钥进行加密,在把加密后的密钥密文通过网络传输给服务器。 黑客可以获取到这里的密文,但是黑客只有公钥,没有私钥。公钥加密,私钥解密。因此即使黑客拿到了公钥,也无法进行解密。 后续客户端和服务器之间就可以使用对称密钥进行加密解密了。
https是基于以上两种方式相结合的加密方式
https 其实是由两部分组成:http+ssl/tls,也就是在 http 上又加了一层处理加密信息的 模块,服务端和客户端的信息传输都会通过 tls 加密,传输的数据都是加密后的数据。
加解密过程:
1)客户端发起 https 请求(就是用户在浏览器里输入一个 https 网址,然后连接到 server 的 443 端口)
2)服务端的配置(采用 https 协议的服务器必须要有一塔数字证书,可以自己制作, 也可以向组织申请,这套证书就是一对公钥和私钥)。
3)传输证书(这个证书就是公钥,只是包含了很多信息)
4)客户端解析证书(由客户端 tls 完成,首先验证公钥是否有效,若发现异常,则弹出 一个警示框,提示证书存在问题,若无问题,则生成一个随机值,然后用证书对随机值进行 加密)
5)传输加密信息(这里传输的是加密后的随机值,目的是让服务端得到这个随机值, 以后客户端和服务端的通信就可以通过这个随机值来进行加密了)
6)服务端解密信息(服务端用私钥解密后得到了客户端传来的随机值,then 把内容通过该值进行对称加密。所谓对称加密就是,将信息和私钥通过某种算法混在一起,这样除非知道私钥,不然无法获取内容,而正好客户端和服务端都知道这个私钥,所以只要加密算法 够彪悍,私钥够复杂,数据就够安全)
7)传输加密的信息
8)客户端解密信息,用随机数来解。