前言
通常我们业务实际开发中离不开加密,比如密码加密、token加密、敏感信息加密等,下面介绍一些常用的加密方法。
1. Base64加密
Base64是基于64个可打印字符来表示二进制数据的一种方法。
const btoa = window.btoa('zhang123') // 编码
console.log('加密后', btoa)
const atob = window.atob('emhhbmcxMjM=') // 解码
console.log('解密后', atob)
加解密如图:
总结:
优势:
1.base64 适合不同平台、不同语言的传输;
2.页面中内嵌使用 base64 格式的小图片,可减少了服务器访问次数;
3.二进制位转换 base64 算法简单,对性能影响不大;
缺点:1.二进制文件转换为 base64 后,体积大概增加 1/3;
2.base64 无法缓存,要缓存只能缓存包含 base64 的文件,比如 js 或者 css;
3.面对大文件时,会消耗一定的 CPU 进行编解码。
2. MD5加密(不可逆)
MD5是一种单向哈希算法,即将任意长度的“消息”经过哈希运算,生成一个128位的“指纹”。
使用MD5加密可以将原始的字符串转化为不可逆的密文,从而保证数据在传输中不被篡改,提高安全性。在前端中,我们可以通过JS库调用md5加密函数进行字符串加密,以保护用户信息。
安装:
// 下载依赖
npm install js-md5 -s
// 引入
import { md5 } from 'js-md5';
// 打印
console.log('md5加密', md5('zhang123'))
加盐:
console.log('md5加密', MD5('zhang123'));
const salt = "A1B2C3";
// 加盐
console.log('md5加密加盐', MD5('zhang123' + salt));
多次加密:
console.log('md5加密', MD5('zhang123'));
const salt = "A1B2C3";
// 加盐
console.log('md5加密加盐', MD5('zhang123' + salt));
// 多次加密
console.log('md5加密加盐', MD5(MD5('zhang123')));