前端项目中遇到须要对参数进行AES/CBC/PKCS5Padding加密,而后传给后台解密,将实现方法记录下。前端
在vue项目终端中输入下面命令安装插件vue
npm install crypto-js --save-dev
复制代码
在工具类中引用crypto-jsnpm
import CryptoJS from "crypto-js";
复制代码
加密bash
export function Encrypt(word) {
let key = '密钥要后后台一致';
let iv = '偏移量要个后台一致';
key = CryptoJS.enc.Utf8.parse(key);
iv = CryptoJS.enc.Utf8.parse(iv);
let srcs = CryptoJS.enc.Utf8.parse(word);
// 加密模式为CBC,补码方式为PKCS5Padding(也就是PKCS7)
let encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
//返回base64
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
复制代码
解密工具
export function Decrypt(word) {
let key = '密钥要后后台一致';
let iv = '偏移量要个后台一致';
key = CryptoJS.enc.Utf8.parse(key);
iv = CryptoJS.enc.Utf8.parse(iv);
let base64 = CryptoJS.enc.Base64.parse(word);
let src = CryptoJS.enc.Base64.stringify(base64);
// 解密模式为CBC,补码方式为PKCS5Padding(也就是PKCS7)
let decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
复制代码
在须要的界面引用utils.jsui
import { Encrypt, Decrypt} from '../utils'
复制代码
使用代码加密
//aes加密
let aesParams = Encrypt('a');
//解密
let aesParams1 = Decrypt('a');
``复制代码