vue中使用AES加密解密

1,431 阅读1分钟

1.安装crypto-js

npm install crypto-js --save-dev

2.utils文件夹下,新建公共文件aes.js

import CryptoJS from 'crypto-js'

export default {
  // 随机生成指定数量的16进制key
  generatekey(num) {
    var library = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    let key = '';
    for (var i = 0; i < num; i++) {
      var randomPoz = Math.floor(Math.random() * library.length)
      key += library.substring(randomPoz, randomPoz + 1)
    }
    return key
  },

  // 加密
  encrypt(word) {
    var keyStr = 'tdjyyxxytdjyyxxy'; // keyStr是aes加密需要用到的16位字符串的key
    var key = CryptoJS.enc.Utf8.parse(keyStr)
    var srcs = CryptoJS.enc.Utf8.parse(word)
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7})
    return encrypted.toString()
  },
  // 解密
  decrypt(word) {
    var keyStr = 'tdjyyxxytdjyyxxy'; // keyStr是aes加密需要用到的16位字符串的key
    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()
  }
}

3.使用加密解密

import AES from '@/utils/aes.js'

//加密
let par="稀土掘金"
console.log(AES.encrypt(par))

//解密
let res="a2RCbiJV6yamMyk5h8IkVA=="
console.log(AES.decrypt(res))

//对象加密,需要先把该对象转成json字符串
let par2={
  name:'张三'
}
console.log(AES.encrypt(JSON.stringify(par2)))

//对象解密
let res2="er4u8rFT28RbQc4wuSlNgFGZZqXVVZYTUwB+RbuTaa0="
console.log(JSON.parse(AES.decrypt(res2)))

image.png