前端使用AES加密和解密

在实际开发中,会用到前端请求后台接口时对请求参数进行加密处理。
直接上代码:

import CryptoJS from "crypto-js";
 //秘钥
const CRYPTOJSKEY= "abcdefgabcdefg12";
// 加密
encrypt(plaintText) {
    var plaintText = plaintText;
    var options = {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
    var encryptedBase64Str = encryptedData.toString().replace(/\//g, "_");
    encryptedBase64Str = encryptedBase64Str.replace(/\+/g,"-");
    return encryptedBase64Str;
},
//解密
decrypt(encryptedBase64Str) {
    var vals = encryptedBase64Str.replace(/\-/g, '+').replace(/_/g, '/');
    var options = {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    var decryptedData = CryptoJS.AES.decrypt(vals, key, options);
    var decryptedStr = CryptoJS.enc.Utf8.stringify(decryptedData);
    return decryptedStr
},

在vue中使用axios请求时对参数进行加密处理

import utilFile from './util.js';

post (url, data) {
    data = utilFile.encrypt(JSON.stringify(data));
    // console.log(data);
    return axios({
      method: 'post',
      url: baseURL + url,
      params: {
        x:'a' + data
      },
      // timeout: 30000,
      withCredentials: true,
      headers: {
        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
        'token':getSessiontoken('token')
      }
    })
  },

你可能感兴趣的:(Vue)