AES - CryptoJS 加密和解密 - 小程序-vue

263 阅读1分钟

1.安装:

npm install crypto-js --save-dev
yarn add crypto-js --dev

// 或者下载js文件
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.js

ECB 模式

  // 解密
  decrypt(word) {
    var key = CryptoJS.enc.Utf8.parse('qGSIb3DQopAQUAA4');
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  },

  // 解密事件
  decryptionHandler(word) {
    var key = CryptoJS.enc.Utf8.parse("qGSIb3DQopAQUAA4");
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  },

CBC模式

注:CBC模式必须要偏移量iv

  // 加密
  encrypt(word) {
    let key = CryptoJS.enc.Utf8.parse('dsakldjkasdjkdsa');
    let iv = CryptoJS.enc.Utf8.parse('');
    let srcs = CryptoJS.enc.Utf8.parse(word);

    let encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return encrypted.toString();
  },
  // 解密
  decrypt(word) {
    var key = CryptoJS.enc.Utf8.parse('dsakldjkasdjkdsa');
    let iv = CryptoJS.enc.Utf8.parse('');

    var decrypt = CryptoJS.AES.decrypt(word, key, {
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.ZeroPadding
    });
    return decrypt.toString(CryptoJS.enc.Utf8);
  },

注意:key值(私钥)需要是16位进制的字段;密文需要14位以上的密文