意图:不希望别人知道我的消息,只有我才能解密 密文:明文数据通过算法处理变成不可读的一段代码
对称加密
加密用的密钥和解密用的密钥是同一个
常见算法:AES、DES、3DES
特点:算法效率高,加密速度快(适合大数据量的加解密处理)
使用场景
- 一般用于对效率有要求的实时数据加密通信。
- 既要保证数据的保密性,又要保证不能有高的延迟,所以通常会使用对称加密算法。
问题:密钥的直接通过网络传递极其不安全
非对称加密
加密用的密钥称为公钥,解密用的密钥称为私钥
也就是公钥负责加密,私钥负责解密
公钥之所以带“公”,也是因为其本身就是就需要对外公开的,并不需要保密。
注意:切记基于非对称的特性,我们也是可以使用公开私钥加密,而使用公钥解密。之所以不这样做仅仅是因为私钥通常比公钥要长,传输起来比较费资源而已。
常见算法:RSA加密算法
特点:加密速度比较慢,(适合小数据量加解密或数据签名)
使用流程:
- 建立连接公钥交换
- 用收到的公钥发信息
- 接收信息用自己的私钥解密
缺点:加密算法比对称加密耗资源(建议与非对称加密结合使用)
对称加密 和 非对称加密 的结合
关键点:用非对称加密传递对称密钥,然后用对称加密传递数据
优点
- 解决非对称加密的密钥传输的安全性问题
- 解决非对称加密算法效率低的问题
Hash加密算法
一种不可逆的信息摘要算法
常见算法:MD5, SHA1, SHA256
特点:
- 无法通过密文还原成明文
- 无论输入数据的长度是多少,得到的输出值是固定的。
使用场景: 密码存储,限定密码长度和复杂度,对明文进行“加盐处理”,再用加密算法加密
Base64
用文本表示二进制的编码方式
由于编码方式是公开的,所有Base64不算是加密算法,它是一种数据编码方式
用Base64的原因
- 算机最终存储和执行的是01二进制序列,这个二进制序列的含义则由解码程序/解释程序决定
- 很多场景下的数据传输要求数据只能由简单通用的字符组成,比如HTTP协议要求请求的首行和请求头都必须是ASCII编码。(例如:绝大多数现代浏览器都支持一种名为 Data URLs 的特性,允许使用Base64对图片或其他文件的二进制数据进行编码,将其作为文本字符串嵌入网页中。MIME(多用途互联网邮件扩展))
编码原理:
- Basease64编码之所以称为Base64,是因为其使用64个字符来对任意数据进行编码
- 它将二进制数据转换成一个由64个可打印的字符组成的序列:A-Za-z0-9+/
- Base64编码是每3个原始字符编码成4个字符 ,编码后长度比是4/3。比例越大,需要传递更多的字符,传递时间越长。比例越小,则需要更大的编码字符集
使用场景
- 图片传给后台,转成Base64传递,前端(node.js )直接把Base64图片内容内嵌在页面中 blog.csdn.net/I_am_Yong_G…