AES加密

1. 安装,

npm install crypto-js  或者yarn add crypto-js

2. 引入crypto-js,并封装加密解密的方法
在项目的src下的utils文件夹(自己建的文件夹)下新建一个encrypt.js文件,内容如下:

import CryptoJs from 'crypto-js' //引用AES源码js
export default {
  // 加密,调用该方法时,传入的data必须是字符串类型,
  //   故,如果要加密对象等类型,需要先用JSON.stringify()将其字符串化再传入
  encryptByAES (data) {
    let keyStr = 'TheKeyOfmyDatadx' // 16位,密钥字符串
    let key = CryptoJs.enc.Utf8.parse(keyStr) // 将字符串的转为WordArray类型
    let mydata = CryptoJs.enc.Utf8.parse(data)
    // console.log('key:', key, 'mydata:', mydata)
    let udata = CryptoJs.AES.encrypt(mydata, key, {
      mode: CryptoJs.mode.ECB, // 加密模式,ECB模式
      padding: CryptoJs.pad.Pkcs7 // 填充方式
    })
    let encrypted = udata.toString()//  返回的是base64的密文,是字符串类型
    return encrypted
  },
  // 解密, 调用该方法时,传入的data是base64的密文
  decryptByAES (data) {
    let keyStr = 'TheKeyOfmyDatadx'
    let key = CryptoJs.enc.Utf8.parse(keyStr)
    let udata = CryptoJs.AES.decrypt(data, key, {
      mode: CryptoJs.mode.ECB,
      padding: CryptoJs.pad.Pkcs7
    })
    let decrypted = udata.toString(CryptoJs.enc.Utf8)// 返回的是加密之前的原始数据,是字符串类型
    return decrypted
  }
}
注意:
   1.vue项目中使用crypto-js的AES加密方式,实现密码加密解密(ECBCBC两种模式),这里以ECB为例;可以指定密钥偏移量iv
   2) cryptojs支持对字符串计算,或者对WordArray类型(CryptoJS自己封装的数据类型)值的计算;
   3keyStr(密钥) 的长度要不小于14,否则解密时会显示空白;

3. 在main.js中引入encrypt.js文件,并把其挂到Vue的原型上

import Vue from 'vue'
import EncryUtil from '@/utils/encrypt.js'
Vue.prototype.EncryUtil = EncryUtil

此操作过后,在vue的其他页面就可通过this.EncryUtil.方法名访问到encrypt.js的方法。

4. 在页面中使用,示例:
可在任意组件的mounted中测试:

mounted () {
    let data = 'my message' // 需要加密的数据
    let crypted = this.EncryUtil.encryptByAES(data) // 调用加密方法
    console.log('base64密文:', crypted) // base64密文: nWdE7Ul83dWKZwQbINnFMw==
    let decrypt = this.EncryUtil.decryptByAES(crypted) //调用解密方法
    console.log('解密后的数据:', decrypt) // 解密后的数据: my message
  }


Logo

前往低代码交流专区

更多推荐