Vue项目AES加密 写给小白
首先安装依赖包
npm i crypto-js
在request.js 里面设置
import CryptoJS from "crypto-js";
import { parseTime,encrypt,decrypt } from "./utils.js" //注意找准自己的路径
//request请求拦截器 加以下代码
config => {
setParams(config);
return config;
}
function setParams(config) {
let relParams = config.params;
let requestParams = {
_params: null,
_ts: null,
_sign: null
};
//视情况而定 加不加以下两行代码
//requestParams._params = JSON.stringify(relParams);
//requestParams._sign = md5(config.params + "&*^-~/.[]HX}");
let time = "WYQ-" + parseTime(new Date(), "{y}-{m}-{d} {h}:{i}");
requestParams._ts = encrypt(time);
console.log(requestParams._ts);
config.params = requestParams;
}
加密代码可写到util.js里面
//加密
function encrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "找后端要AES秘钥"; //判断是否存在ksy,不存在就用定义好的key
var key = CryptoJS.enc.Base64.parse(keyStr);
console.log(key);
var msg = CryptoJS.enc.Utf8.parse(word);
console.log(msg);
var encrypted = CryptoJS.AES.encrypt(msg, key, {
mode: CryptoJS.mode.ECB
//padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
//解密
function decrypt(word, keyStr) {
keyStr = keyStr ? keyStr : "AES秘钥";
var key = CryptoJS.enc.Utf8.parse(keyStr);
var decrypt = CryptoJS.AES.decrypt(word, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Utf8.stringify(decrypt).toString();
}
//当前时间
export function parseTime(time, cFormat) {
if (arguments.length === 0) {
return null;
}
const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
let date;
if (typeof time === "object" && time !== null) {
date = time;
} else {
if (typeof time === "string" && /^[0-9]+$/.test(time)) {
time = parseInt(time);
}
if (typeof time === "number" && time.toString().length === 10) {
time = time * 1000;
}
date = new Date(time);
}
const formatObj = {
y: date.getFullYear(),
m: date.getMonth() + 1,
d: date.getDate(),
h: date.getHours(),
i: date.getMinutes(),
s: date.getSeconds(),
a: date.getDay()
};
const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
const value = formatObj[key];
// Note: getDay() returns 0 on Sunday
if (key === "a") {
return ["日", "一", "二", "三", "四", "五", "六"][value];
}
return value.toString().padStart(2, "0");
});
return time_str;
}