要理解加密在网络通信中的应用,首先,要理解两个概念:
1. 对称加密:加密和解密使用同一个
密钥,比如密钥key,消息发送方使用key来加密内容,消息获取方使用key来解密内容。
2. 非对称加密:加密和解密使用不同
的密钥,一般是生成两个密钥,称为公钥
和私钥
,自己持有私钥,将公钥授予他人。非对称加密没有规定哪个密钥是用来加密哪个密钥是用来解密的,你可以使用私钥来加密,用公钥来解密;也可以使用公钥来加密,私钥来解密。不同应用场景下不同的使用方式。
比如我们安装git客户端,我们通过:
ssh-keygen -t rsa -C "youremail@example.com"
来生成密钥对,xxx.pub
里面就是公钥,另一个没有后缀名的xxx
就是私钥。我们通常会把xxx.pub里面的内容复制到gitlab上,这样我们提交代码的时候,会将我们提交的代码使用私钥加密,远程仓库会使用公钥解密,我们将公钥复制到gitlab的过程就相当于颁发公钥的过程,只不过这个过程是由我们自己人为来完成的。