- 首先安装 crypto-js插件,安装命令:
npm install crypto-js -S
-S等同于--save,保存在package.json文件中,是在dependencies 下,--save安装包信息将加入到dependencies(生产环境)中,生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖;
-D等同于--save-dev,也保存在package.json文件中,是在devDependencies下,--save-dev 安装包信息将加入到devDependencies(开发环境)中,开发阶段的依赖,就是我们在开发过程中需要的依赖,只在开发阶段起作用。
- 新建crypto.js文件,封装自定义加密和解密方法,导出:
import CryptoJS from 'crypto-js'
// 默认的KEY与iv与后端保持一致,不采用后端传值密钥
const KEY = CryptoJS.enc.Utf8.parse('aaDJL2d9DfhLZO0z');// 密钥
const IV = CryptoJS.enc.Utf8.parse('412ADDSSFA342442');// 偏移量
/** AES加密 */
export function Encrypt(word, keyStr, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let srcs = CryptoJS.enc.Utf8.parse(word);
var encrypted = CryptoJS.AES.encrypt(srcs, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
}
/** AES 解密 */
export function Decrypt(word, keyStr, ivStr) {
let key = KEY;
let iv = IV;
if (keyStr) {
key = CryptoJS.enc.Utf8.parse(keyStr);
iv = CryptoJS.enc.Utf8.parse(ivStr);
}
let base64 = CryptoJS.enc.Base64.parse(word);
let src = CryptoJS.enc.Base64.stringify(base64);
var decrypt = CryptoJS.AES.decrypt(src, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.ZeroPadding
});
var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
- 引入使用,如下:
//引入
import {Decrypt,Encrypt} from "./crypto.js";
//使用方式
Encrypt(JSON.stringify(config.data));//加密
eg: //密码加密
this.formLogin.password = Encrypt(JSON.stringify(this.formLogin.password));
JSON.parse(Decrypt(response.data));//解密
eg: //密码解密
this.formLogin.password = JSON.parse(Decrypt(this.getCookie("password")));
标签:enc,加密,Utf8,解密,iv,parse,let,数据传输,CryptoJS From: https://www.cnblogs.com/DTCLOUD/p/17460948.html作者:张勇辉