怎么利用AES进行前端的数据加密

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);

猜你喜欢

转载自blog.csdn.net/SmallTeddy/article/details/106563532