前端js使用crypto-js进行aes解密,解密内容为空

getCode() {
      let data = 'qN49G7bBKHBJpl3mTfwyYA=='
      let key = 'bluedon'
      let iv = '0102030405060708'

      let str = this.getDAesString(data, key, iv)
      this.$message.success(str)
    },
    getDAesString(encrypted, key, iv) {
      // 解密
      var ikey = CryptoJS.enc.Utf8.parse(key)
      var iiv = CryptoJS.enc.Utf8.parse(iv)
      var decrypted = CryptoJS.AES.decrypt(encrypted, ikey, {
        iv: iiv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
      })
      console.log(decrypted.toString(CryptoJS.enc.Utf8))
      return decrypted.toString(CryptoJS.enc.Utf8) //
    }

项目是vue写的,这样解密出来的console.log为空,看了很多遍,这个密文和key/iv值在在线网站上都能转出来,但是我偏偏拿不到结果,看网上都是这么写的。

阅读 13.7k
3 个回答
import CryptoJS from "crypto-js";
 //秘钥
const CRYPTOJSKEY= "abcdefghighkml";
 
export default {
  
  //加密
  /*
  * {param} plaintText 加密明文
  * return  str 加密结果
  */
  encrypt(plaintText) {
    var plaintText = plaintText;
    var options = {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
    var encryptedBase64Str = encryptedData.toString();
    return encryptedBase64Str;
  },
  //解密
  /*
  * {param} plaintText 解密密文
  
  * return  str 解密结果
  */
  decrypt(encryptedBase64Str, type) {
   
    var encryptedBase64Str = encryptedBase64Str;
    var options = {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    };
    var key = CryptoJS.enc.Utf8.parse(CRYPTOJSKEY);
    // 解密
    var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, options);
    // 解密后,需要按照Utf8的方式将明文转位字符串
    var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
    return decryptedStr ;
  }
};

使用

 //引入
 import Util from "util";
 //加密
 let userPwd = Util.encrypt('123456');

我解密为空的原因是因为密钥长度的问题。对长度有要求的

let data = 'qN49G7bBKHBJpl3mTfwyYA=='
let key = 'bluedon'
let iv = '0102030405060708'

我用crypto-js写的站点 aes加密解密 试了试,确实是为空,如你所说的密钥长度问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题