与后端接口进行加密传参,接收参数。。。前端信息安全处理
为什么要编码?
由于一些网络通讯协议的限制, 又或者是出于信息加密的目的, 我们就需要将原信息转换为base64编码,然后才能进行传输.例如,发送某些含有 ASCII 码表中0到31之间的控制字符的数据。
window.btoa 对字符串进行 base64编码(注意不能编码中文);
winodw.atob 对 base64字符串 进行解码(对于包含中文的 base64编码,不能正确解码);
AES 加密 —安装:
npm install crypto-js
例子使用:
aes加密: crypto.js
import CryptoJS from "crypto-js";
let CryptoJSKey = '0fHBHGFCRFFG1e25se' //16位自定义的,要与后端一起配置
const key = CryptoJS.enc.Utf8.parse(CryptoJSKey);
const iv = CryptoJS.enc.Utf8.parse(CryptoJSKey);
//AES加密传参 (封装)
Encrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);//需要加密的内容
// let encrypted = CryptoJS.AES.encrypt(srcs, key, {
// iv: iv,
// mode: CryptoJS.mode.CBC,
// padding: CryptoJS.pad.Pkcs7
// });
if (typeof word == "string") {
const srcs = CryptoJS.enc.Utf8.parse(word);
encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
} else if (typeof word == "object") {
//对象格式的转成json字符串
const data = JSON.stringify(word);
const srcs = CryptoJS.enc.Utf8.parse(data);
encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});