Javascript Google CryptoJS AES结果过长1个块

Javascript Google CryptoJS AES结果过长1个块,javascript,aes,Javascript,Aes,您好,我正在使用以下密码短语:“test”。 这将生成AES键:“9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08” IV是0 作为测试,我尝试加密这个密钥。因为我总是使用256位的程序,所以我在64个十六进制字符(256位)后剪切加密密码 然而,当我解密这个剪切密文时,我丢失了密钥的最后16个字符(128位) 这是一个AES块的大小,但我的密钥是256位,所以我觉得很奇怪 我的问题是:为什么我的AES结果太长?并且

您好,我正在使用以下密码短语:“test”。 这将生成AES键:“9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08” IV是0

作为测试,我尝试加密这个密钥。因为我总是使用256位的程序,所以我在64个十六进制字符(256位)后剪切加密密码

然而,当我解密这个剪切密文时,我丢失了密钥的最后16个字符(128位)

这是一个AES块的大小,但我的密钥是256位,所以我觉得很奇怪

我的问题是:为什么我的AES结果太长?并且:我可以正确地执行此操作,使其仅为64个字符吗

(CryptoJS是用于javascript的谷歌加密库。)


禁用填充。默认值是PKCS#7填充,它将在加密之前始终对明文应用填充。如果是一个完整的块,它将填充另一个完整的块,这使得结果比您预期的长一个块。

您好。尝试禁用填充。
function go(){
    var shakey = CryptoJS.SHA256(document.getElementById("t3").value); //Textbox key here.
    var hash =CryptoJS.enc.Hex.parse(CryptoJS.enc.Hex.stringify(shakey));
    var key = CryptoJS.enc.Hex.stringify(hash);
    var iv  = CryptoJS.enc.Hex.parse('00000000000000000000000000000000');

    var encHex = CryptoJS.enc.Hex.parse(document.getElementById("t1").value);

    var encrypted = CryptoJS.AES.encrypt(encHex, hash, { iv: iv }); //Textbox input here.

    var encObj = {ciphertext:CryptoJS.enc.Hex.parse(document.getElementById("t2").value)}; //Textbox decrypt here

    var decrypted = CryptoJS.AES.decrypt(encObj, hash, { iv: iv});

    var encResult = (encrypted.ciphertext+"").length > 63 ? (encrypted.ciphertext+"").substring(0,64) : (encrypted.ciphertext+"");

    document.getElementById("p1").innerHTML=encResult;
    document.getElementById("p2").innerHTML=decrypted;
}