安装依赖
npm install crypto-js
封装 encryption.js 方法
import CryptoJS from "crypto-js";
//加密
const crypto = (data) => {
const word = JSON.stringify(data);
const counter = useCounterStore();
//密钥
const SECRET_KEY = CryptoJS.enc.Utf8.parse('gong si jia mi jie mi mi yao');
let encrypted;
let srcs = CryptoJS.enc.Utf8.parse(word);
encrypted = CryptoJS.AES.encrypt(srcs, SECRET_KEY, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
//解密
const decrypt = (word) => {
const counter = useCounterStore();
//密钥
const SECRET_KEY = CryptoJS.enc.Utf8.parse('gong si jia mi jie mi mi yao');
let base64 = CryptoJS.enc.Base64.parse(word.replace(/\s/g, ''))
let src = CryptoJS.enc.Base64.stringify(base64)
let decrypt = CryptoJS.AES.decrypt(src, SECRET_KEY, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8)
return JSON.parse(decryptedStr.toString());
}
export {
crypto, decrypt
}
使用页面
import { crypto, decrypt } from './encryption'
//请求拦截中加密
instance.interceptors.request.use(
config => {
// localStorage.token && (config.headers.Authorization = localStorage.token)
config.headers["Content-Type"] = 'text/plain'
config.data = crypto(config.data)
return config
},
error => {
return Promise.error(error)
}
)
//响应拦截中解密
instance.interceptors.response.use(response => {
response.data = decrypt(response.data)
return Promise.resolve(response)
}, error => {
return Promise.reject(error)
})
单独页面使用
import { crypto, decrypt } from '../utils/encryption'
getInformation() {
let body = crypto({ authCode: this.AllInfo.authCode, factoryCode: this.AllInfo.nameplateNo });
axios({
url: 'XXXXXXXX',
method: "POST",
data: body,
headers: {
"Content-Type": "text/plain"
},
}).then(res => {
let data = decrypt(res.data)
if (data.rspCode == 1) {
}
})
},