前端Vue ,使用aes对需要的字段进行加密,解密

2,067 阅读1分钟
  1. 第一步确保有node.js 执行以下命令:

image.png

2.在项目的src下的utils的文件夹里的utils引入安装好的js

image.png

3.封装加密的函数,如下:

//  data:要加密的字符串
//  key:秘钥
//  iv:偏移量
export function encrypt(key, iv, data) {
  if (typeof data === 'object') {
    // 如果传入的data是json对象,先转义为json字符串
    try {
      data = JSON.stringify(data);
    } catch (error) {
      console.log('error:', error);
    }
  }
  // 统一将传入的字符串转成UTF8编码,这里的key一般是后端生成
  const dataHex = CryptoJS.enc.Utf8.parse(data); // 需要加密的数据
  const keyHex = CryptoJS.enc.Utf8.parse(key); // 秘钥
  const ivHex = CryptoJS.enc.Utf8.parse(iv); // 偏移量
  const encrypted = CryptoJS.AES.encrypt(dataHex, keyHex, {
    iv: ivHex,
    mode: CryptoJS.mode.CBC, // 加密模式
    padding: CryptoJS.pad.Pkcs7,
  });
  let encryptedVal = encrypted.ciphertext.toString();
  return encryptedVal; //  返回加密后的值
}

4.封装解密的函数,如下:

//  data:要解密的字符串
//  key:秘钥
//  iv:偏移量
export function decrypt(key, iv, data) {
  /*
    传入的key和iv需要和加密时候传入的key一致  
  */
  // 统一将传入的字符串转成UTF8编码
  let encryptedHexStr = CryptoJS.enc.Hex.parse(data);
  let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
  const keyHex = CryptoJS.enc.Utf8.parse('key'); // 秘钥
  const ivHex = CryptoJS.enc.Utf8.parse(iv); // 偏移量
  let decrypt = CryptoJS.AES.decrypt(srcs, keyHex, {
    iv: ivHex,
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7,
  });
  let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
  return decryptedStr.toString();
}

5.然后在需要这两个函数的地方引入,如图:

image.png

6.接下来做个演示,如何运用这两个函数,以确保运用正确。

image.png

得到的结果:

image.png

到这里来加密解密就写好了,一般是前端加密,后端去解密,大家灵活运用哦!