Здравствуйте, я использую следующую кодовую фразу: «test». Это создает ключ AES: «9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08» IV 0.Google CryptoJS AES результат слишком длинный на 1 блок
В качестве теста я пытался шифрует этот ключ. Поскольку я всегда буду использовать эту программу с 256 битами, я вырезаю зашифрованный шифр после 64 шестнадцатеричных символов (256 бит).
Однако, когда я расшифровываю этот зашифрованный текст, мне не хватает последних 16 символов (128 бит) моего ключа.
Это размер одного блока AES, но мой ключ - 256 бит, поэтому мне кажется странным.
Мой вопрос: Почему мой результат AES слишком длинный? И: Могу ли я сделать это правильно, так что его 64 символа?
(CryptoJS является криптография библиотека Google для JavaScript.)
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;
}
Еще раз. Попробуйте отключить заполнение [с помощью параметра NoPadding] (https://code.google.com/p/crypto-js/#Block_Modes_and_Padding). – Reid