Welcome

首页 / 脚本样式 / Vue / vue项目中使用AES算法进行加密和解密

vue项目中使用AES算法进行加密和解密

(60条消息) vue项目中使用AES算法进行加密和解密_vue aes_无月大大的博客-CSDN博客

项目中用到AES算法做传输加密的优点。

1、对内存的需求非常低,适合于受限环境。

2、运算速度快。

3、分组长度和密钥长度设计灵活。

4、很好的抵抗差分密码分析及线性密码分析的能力。

5、AES的密钥长度比DES大,它也可设定为32比特的任意倍数,最小值为128比特,最大值为256比特,所以用穷举法是不可能破解的。


简单说一下

1、安装crypto-js依赖


npm install crypto-js --save-dev

1

2、创建配置文件AES.js

路径可以按照这个src/utils/AES.js


import CryptoJS from "crypto-js";

//随机生成指定数量的32进制key

export default {

  generatekey(num) {

    let library =

      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";

    let key = "";

    for (let i = 0; i < num; i++) {

      let randomPoz = Math.floor(Math.random() * library.length);

      key += library.substring(randomPoz, randomPoz + 1);

    }

    return key;

  },

  //加密

  encrypt(word, keyStr) {

   // 判断是否存在keyStr,不存在就用默认的keyStr(注意:这个keyStr必需要前后端统一,不然双方加密解密后会不相同。调用generatekey方法生成)

    keyStr = keyStr ? keyStr : "1grLx91U40VawzhRAm7E";

    let key = CryptoJS.enc.Utf8.parse(keyStr);

    let srcs = CryptoJS.enc.Utf8.parse(word);

    let encrypted = CryptoJS.AES.encrypt(srcs, key, {

      mode: CryptoJS.mode.ECB,

      padding: CryptoJS.pad.Pkcs7

    });

    return encrypted.toString();

  },

  //解密

  decrypt(word, keyStr) {

    keyStr = keyStr ? keyStr : "1grLx91U40VawzhRAm7E";

    let key = CryptoJS.enc.Utf8.parse(keyStr);

    let decrypt = CryptoJS.AES.decrypt(word, key, {

      mode: CryptoJS.mode.ECB,

      padding: CryptoJS.pad.Pkcs7

    });

    return CryptoJS.enc.Utf8.stringify(decrypt).toString();

  }

};


3、使用

因为用的地方比较多我直接挂载在vue的prototype上方便我直接调用,在main.js中加加上以下代码。


import AES from './utils/AES';

Vue.prototype.$aes = AES;


例:


// 注意:如果是对象/数组的话,需要先转换成字符串

//调用加密方法

let cars = '离谱到家158855515485451'

let encrypts = this.$aes.encrypt(cars);


//调用解密方法

let dess = this.$aes.decrypt("P2Cq833yWdH8se2rHTbxlx6pFIQpdJ9515hNIIi5rlU=");


console.log("加密",encrypts);

console.log("解密",dess);