加解密

417 阅读3分钟

意图:不希望别人知道我的消息,只有我才能解密 密文:明文数据通过算法处理变成不可读的一段代码

对称加密

加密用的密钥和解密用的密钥是同一个

常见算法:AES、DES、3DES

特点:算法效率高,加密速度快(适合大数据量的加解密处理)

使用场景

  • 一般用于对效率有要求的实时数据加密通信。
  • 既要保证数据的保密性,又要保证不能有高的延迟,所以通常会使用对称加密算法。

问题:密钥的直接通过网络传递极其不安全

非对称加密

加密用的密钥称为公钥,解密用的密钥称为私钥

也就是公钥负责加密,私钥负责解密

公钥之所以带“公”,也是因为其本身就是就需要对外公开的,并不需要保密。

注意:切记基于非对称的特性,我们也是可以使用公开私钥加密,而使用公钥解密。之所以不这样做仅仅是因为私钥通常比公钥要长,传输起来比较费资源而已。

常见算法:RSA加密算法

特点:加密速度比较慢,(适合小数据量加解密或数据签名)

使用流程:

  • 建立连接公钥交换
  • 用收到的公钥发信息
  • 接收信息用自己的私钥解密

缺点:加密算法比对称加密耗资源(建议与非对称加密结合使用)

对称加密 和 非对称加密 的结合

关键点:用非对称加密传递对称密钥,然后用对称加密传递数据

优点

  • 解决非对称加密的密钥传输的安全性问题
  • 解决非对称加密算法效率低的问题

Hash加密算法

一种不可逆的信息摘要算法

常见算法:MD5, SHA1, SHA256

特点:

  • 无法通过密文还原成明文
  • 无论输入数据的长度是多少,得到的输出值是固定的。

使用场景: 密码存储,限定密码长度和复杂度,对明文进行“加盐处理”,再用加密算法加密

使用方式:juejin.cn/post/684490…

Base64

用文本表示二进制的编码方式

由于编码方式是公开的,所有Base64不算是加密算法,它是一种数据编码方式

用Base64的原因

  • 算机最终存储和执行的是01二进制序列,这个二进制序列的含义则由解码程序/解释程序决定
  • 很多场景下的数据传输要求数据只能由简单通用的字符组成,比如HTTP协议要求请求的首行和请求头都必须是ASCII编码。(例如:绝大多数现代浏览器都支持一种名为 Data URLs 的特性,允许使用Base64对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中。MIME(多用途互联网邮件扩展))

编码原理:

  • Basease64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码
  • 它将二进制数据转换成一个由64个可打印的字符组成的序列:A-Za-z0-9+/
  • Base64编码是每3个原始字符编码成4个字符 ,编码后长度比是4/3。比例越大,需要传递更多的字符,传递时间越长。比例越小,则需要更大的编码字符集

blog.xiayf.cn/2016/01/24/…

使用场景