Vue项目AES加密 写给小白

Vue项目AES加密 写给小白

首先安装依赖包

npm i crypto-js

在request.js 里面设置

import CryptoJS from "crypto-js";
import { parseTime,encrypt,decrypt } from "./utils.js"  //注意找准自己的路径

//request请求拦截器 加以下代码
 config => {
    setParams(config);  
    return config;
  }

function setParams(config) {
  let relParams = config.params;
  let requestParams = {
    _params: null,
    _ts: null,
    _sign: null
  };
  //视情况而定 加不加以下两行代码
  //requestParams._params = JSON.stringify(relParams);
  //requestParams._sign = md5(config.params + "&*^-~/.[]HX}");
  
  let time = "WYQ-" + parseTime(new Date(), "{y}-{m}-{d} {h}:{i}");
  requestParams._ts = encrypt(time);
  console.log(requestParams._ts);
  config.params = requestParams;
}

加密代码可写到util.js里面


//加密
function encrypt(word, keyStr) {
  keyStr = keyStr ? keyStr : "找后端要AES秘钥"; //判断是否存在ksy,不存在就用定义好的key
  var key = CryptoJS.enc.Base64.parse(keyStr);
  console.log(key);
  var msg = CryptoJS.enc.Utf8.parse(word);
  console.log(msg);
  var encrypted = CryptoJS.AES.encrypt(msg, key, {
    mode: CryptoJS.mode.ECB
    //padding: CryptoJS.pad.Pkcs7
  });
  return encrypted.toString();
}

//解密
function decrypt(word, keyStr) {
  keyStr = keyStr ? keyStr : "AES秘钥";
  var key = CryptoJS.enc.Utf8.parse(keyStr);
  var decrypt = CryptoJS.AES.decrypt(word, key, {
   mode: CryptoJS.mode.ECB,
   padding: CryptoJS.pad.Pkcs7
  });
  return CryptoJS.enc.Utf8.stringify(decrypt).toString();
 }

//当前时间
export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null;
  }
  const format = cFormat || "{y}-{m}-{d} {h}:{i}:{s}";
  let date;
  if (typeof time === "object" && time !== null) {
    date = time;
  } else {
    if (typeof time === "string" && /^[0-9]+$/.test(time)) {
      time = parseInt(time);
    }
    if (typeof time === "number" && time.toString().length === 10) {
      time = time * 1000;
    }
    date = new Date(time);
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  };
  const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => {
    const value = formatObj[key];
    // Note: getDay() returns 0 on Sunday
    if (key === "a") {
      return ["日", "一", "二", "三", "四", "五", "六"][value];
    }
    return value.toString().padStart(2, "0");
  });
  return time_str;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值