1、安裝
npm install crypto-js
2、創建aes.js文件
我是放在src/utils/aes.js
3、aes頁面引入方法
import CryptoJS from 'crypto-js/crypto-js'
/*
* 默認的 KEY IV 如果在加密解密的時候沒有傳入KEY和IV,就會使用這裏定義的
*
* 前後端交互時需要前後端密鑰和初始向量保持一致
*/
const KEY = CryptoJS.enc.Utf8.parse("1234567890ABCDEF");// 密鑰 長度必須爲16位
const IV = CryptoJS.enc.Utf8.parse("123456"); // 初始向量 長度隨意
/*
* AES加密 :字符串 key iv 返回base64
*/
export function encrypt(str, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr && ivStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let srcs = CryptoJS.enc.Utf8.parse(str);
var encrypt = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC, //這裏可以選擇AES加密的模式
padding: CryptoJS.pad.Pkcs7
});
return CryptoJS.enc.Base64.stringify(encrypt.ciphertext);
}
/*
* AES 解密 :字符串 key iv 返回base64
*/
export function decrypt(str, keyStr, ivStr) {
let key = KEY
let iv = IV
if (keyStr && ivStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let base64 = CryptoJS.enc.Base64.parse(str);
let src = CryptoJS.enc.Base64.stringify(base64);
var decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC, //這裏可以選擇AES解密的模式
padding: CryptoJS.pad.Pkcs7
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
4、在需要加密的組建中引入
import { encrypt, decrypt } from "@/utils/aes.js";
5、加密解密
let aa = 'www';
let aa = encrypt(aa);
console.log(aa);
let aa = decrypt(aa);
console.log(aa);