背景

在最近的项目中,客户要求三方安全测试,因此对系统中部分接口采用加密传输。

首先

npm i crypto-js --save

在js文件中写加密、解密的方法

import CryptoJS from "crypto-js"

// AES加密
export function encryptByAES (data) {
  let AESKey = "XXXXXXXX";  // 此处为密钥
  let key = CryptoJS.enc.Utf8.parse(AESKey);
  let cipherText = CryptoJS.AES.encrypt(data, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return cipherText.toString();
}

// AES解密
export function decryptedByAES (data) {
  let AESKey = "XXXXXXXX";  // 此处为密钥
  let key = CryptoJS.enc.Utf8.parse(AESKey);
  let decryptedData = CryptoJS.AES.decrypt(data, key, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
  });
  return decryptedData.toString(CryptoJS.enc.Utf8)
}

在组件中使用

import { encryptByAES, decryptedByAES} from '@/XXX/aes.js'

console.log(encryptByAES("此处为明文"));
console.log(decryptedByAES("此处为密文"));

在使用过程中发现get请求会过滤密文中的特殊符号,所以需要在进行请求时,使用encodeURIComponent()方法进行转换。

import { encryptByAES, decryptedByAES} from '@/XXX/aes.js'

console.log(encryptByAES("此处为明文"));

encodeURIComponent(encryptByAES("此处为明文"));

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐