一、下载依赖包
npm i crypto-js
npm i md5
二、在utils文件中写js文件(名字随便取)例:crypto.js
import CryptoJs from "crypto-js"
import md5 from "md5"
export default function (keystr = "****************") {
(keystr是与后端约定的字符串 例:1234567890123456)
const key = CryptoJs.enc.Latin1.parse(keystr);
const iv = CryptoJs.enc.Latin1.parse(keystr);
// AES加密
const encrypt = data => {
if (typeof data == 'string') {
data = data
} else {
data = JSON.stringify(data)
}
const srcs = CryptoJs.enc.Utf8.parse(data);
const encrypted = CryptoJs.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
});
return encrypted.toString();
};
// AES解密
const decrypt = encrypted => {
if (encrypted) {
const decrypted = CryptoJs.AES.decrypt(encrypted, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
});
return JSON.parse(decrypted.toString(CryptoJs.enc.Utf8))
}
return false;
}
// // AES,MD5加密
const encryptmd5 = data => {
if (typeof data == 'string') {
data = data
} else {
data = JSON.stringify(data)
}
const srcs = CryptoJs.enc.Utf8.parse(data);
const encrypted = CryptoJs.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
});
return { data: encrypted.toString(), md5: md5(data) };
}
// AES,MD5解密
const decryptmd5 = encrypted => {
if (encrypted.data && encrypted.md5) {
const decrypted = CryptoJs.AES.decrypt(encrypted.data, key, {
iv: iv,
mode: CryptoJs.mode.CBC,
padding: CryptoJs.pad.Pkcs7
});
const data = decrypted.toString(CryptoJs.enc.Utf8);
if (md5(data) === encrypted.md5) {
return JSON.parse(data);
}
return false;
}
return false;
};
return {
encrypt,
decrypt,
encryptmd5,
decryptmd5
}
}
三、引入使用
import crypto from '@/utils/crypto'
// 加密
let res1 = crypto().encrypt(this.form)(this.form是需要加密的东西)
// 解密
let res2 = crypto().decrypt(res1)