背景

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

首先

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

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐