CryptoJS 解密值与原始值不同

CryptoJS decrypted value differ from the original value

我正在尝试加密一些字符串并使用 CryptoJS (AES-256) 对其进行解密。

我的javascript代码:

function hexStringToByte(str) {
    if (!str) {
        return new Uint8Array();
    }
    
    var a = [];
    for (var i = 0, len = str.length; i < len; i+=2) {
        a.push(parseInt(str.substr(i,2),16));
    }
    
    return new Uint8Array(a);
}

function aesEcryption(input, key, type){
    var xx = input;
    console.log("Print Value");
    console.log(xx);
    console.log(key);
    var key  = CryptoJS.enc.Hex.parse(key);
    var iv   = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    var encrypted = CryptoJS.AES.encrypt(xx, key, {iv: iv, padding: CryptoJS.pad.NoPadding});
    console.log("Encrypted");
    console.log(CryptoJS.enc.Base64.stringify(encrypted.ciphertext))
    console.log(encrypted.toString());
    return encrypted.toString();
}


function aesDecryption(encryptedString, key, type){
    console.log("testttt");
    console.log(key);
    console.log(encryptedString);
    var key  = CryptoJS.enc.Hex.parse(key);
    var iv   = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');
    var decrypted = CryptoJS.AES.decrypt(encryptedString, key,{iv:iv, padding: CryptoJS.pad.NoPadding});
    decrypted = decrypted.toString();
    console.log("decrpyted");
    // console.log(typeof decrypted);
    // console.log(decrypted);
    return decrypted;
}

我的设置:
fefe3124bdc21e8a1c1b3fdfb84c79950b394b8f86fd49dddb616037b1bc2474(键)

a(输入)

Qw==(加密字符串)

d5(解密后的值)

请问我的代码逻辑哪里有问题?

好的,我已经弄清楚为什么值会不同了。只需要去掉padding选项,解密后的值就和原来的一样了。

var encrypted = CryptoJS.AES.encrypt(xx, key, {iv: iv});

var decrypted = CryptoJS.AES.decrypt(encryptedString, key,{iv:iv});

我只是添加这个答案,以防有人遇到与我相同的问题。

干杯!