编解码
Base64编码算法
- Base64编码算法是一种用64个字符(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)来表示任意二进制数据的方法。
- base64 只是一种编码方式,并不是一种加密算法,不要使用 base64 来加密数据。
对称加密
- 在对称加密算法中,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。
- 收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。
- 在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。
- 该算法的缺点是,如果一旦密钥泄漏,那么加密的内容将都不可信了。
非对称加密
- 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。
- 公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密(这个过程可以做数字签名)。
- 非对称加密主要使用的是RSA算法。
不可逆加密
MD5
CA认证
- CA的全称是Certificate Authority(证书颁发机构),它可以为企业颁发数字证书确认这些企业的身份,同时也可以吊销数字证书。
- 在HTTPS中需要一个SSL证书,该证书也属于数字证书的一种由CA进行颁发,内容包括公钥+申请者与颁发者信息+签名.
具体的证书验证过程:
- 客户端请求服务器
- 服务器将证书和数字签名通过私钥加密携带着公钥一同传递给客户端
- 客户端收到后首先拿着公钥解密证书,拿着证书去CA机构进行认证是否合法
- 如果证书合法就对证书进行hash运算,再将数字签名解密,对比两个hash值,如果一致代表证书没有被冒充。
另外,进行CA认证一般是要收费的
SSL
SSL全称为Secure Sockets Layer(安全套接层),没错,它就是HTTPS的核心,换句话说就是HTTPS就是HTTP+SSL,通过SSL可以实现HTTP安全传输,实现原理就是基于上面几个小结所讲的对称加密、非对称加密、CA认证,下面我先用一张图来代表SSL整个流程,如图:

- 客户端请求服务器,并携带支持的加密算法
- 服务器选定加密算法,将确认的加密算法+公钥+证书一并返回给客户端
- 客户端收到会拿着公钥去进行CA认证,如果认证成功就生成一个对称秘钥用公钥加密并返回给服务器,否则就视为服务器为非法服务器。
- 服务器拿到对称秘钥后通过私钥进行解密并保存,此后客户端和服务器就可以通过该秘钥对数据进行加密传输
- 服务器发送数据前需要对数据进行一次hash运算得到一个hash值,对数据和hash值加密后传输给客户端
- 客户端收到数据后对数据进行解密,然后对数据进行一次hash运算得到一个hash值,并解密服务器传来的hash值,将两个hash值进行比较,如果不相同可视为数据中途被篡改
网友评论