npm install crypto-js
// 安装之后看到node_modules目录直接放到public目录下
在utils目录下新建文件crypto.ts
利用AES实现加密和解密的实现:
// 导入包crypto-js
import CryptoJS from 'crypto-js';
// 导入trim方法
import { trim } from './utils';
// 秘钥
const ENC_KEY: string = 'h3881jiu2e0yz3e8pspu55wxgvxajxb0';
/**
* @description AES 加密
* @param {string} data
* @returns {any}
*/
function encryptByDES(data: string) {
let str = trim(data);
const keyHex: any = CryptoJS.enc.Utf8.parse(ENC_KEY);
const encrypted: any = CryptoJS.AES.encrypt(str, keyHex, {
iv: keyHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted.toString();
}
/**
* @description AES 解密
* @param {any} ciphertext
* @returns {any}
*/
function decryptByDES(ciphertext: any) {
const keyHex: any = CryptoJS.enc.Utf8.parse(ENC_KEY);
const decrypted: any = CryptoJS.AES.decrypt(ciphertext, keyHex, {
iv: keyHex,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return decrypted.toString(CryptoJS.enc.Utf8);
}
export { ENC_KEY, encryptByDES, decryptByDES };
封装简单的trim()方法:
export function trim(str: string) {
return str.replace(/^\s+|\s+$/g, '');
}
使用的时候:
// import { decryptByDES ,decryptByDES } from '@/utils/crypto' 进行导入
decryptByDES(Str);
decryptByDES(Str);