Как расшифровать с помощью CryptoJS, используя AES?

Как следует из вопроса, я не могу правильно расшифровать значение, используя необходимые параметры (AES, режим ECB и PKCS7).

Я шифрую, как показано ниже:

  var ENC_KEY = "bXlrZXk=";  //"mykey"

  var encrypted = CryptoJS.AES.encrypt("hello",  CryptoJS.enc.Base64.parse(ENC_KEY), 
    {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
  console.log('encrypted: ' + encrypted);

который работает, как и ожидалось, и выводит зашифрованное значение, которое я ожидаю, однако, когда я расшифровываю это, используя приведенное ниже, я получаю вывод пустого объекта:

var decrypted = CryptoJS.AES.decrypt(encrypted, CryptoJS.enc.Base64.parse(ENC_KEY), 
    {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
    });
    console.log('decrypted: ' + decrypted);

Я также пытался использовать:

console.log('encrypted is decrypted to: ' + decrypted.toString(CryptoJS.enc.Utf8);

а радости нет...


person user3197788    schedule 27.11.2014    source источник


Ответы (1)


Я попробовал это в скрипке (немного изменил, чтобы заставить ее работать):

//decrypt gives a hex
function hex2a(hexx) {
    var hex = hexx.toString();//force conversion
    var str = '';
    for (var i = 0; i < hex.length; i += 2)
        str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
    return str;
}

var key = CryptoJS.enc.Base64.parse("Secret Passphrase"); 

alert(key);

var encrypted = CryptoJS.AES.encrypt("hello",  key, 
    {
        mode: CryptoJS.mode.ECB
    });

alert('encrypted: ' + encrypted);

var decrypted = CryptoJS.AES.decrypt(encrypted, key, 
    {
        mode: CryptoJS.mode.ECB
    });

alert('decrypted: ' + hex2a(decrypted));

http://jsfiddle.net/gttL705r/

и обнаружил, что расшифровка вернула шестнадцатеричный код, который, возможно, не был строкой... может ли это быть причиной ваших проблем? Итак, с помощью быстрой функции hex2ascii «привет» возвращается обратно :)

Я также удалил указанное дополнение, так как в документах указано, что Pkcs7 используется по умолчанию, и я не смог найти src js, который мне нужно было загрузить для него.

person neildaemond    schedule 27.11.2014
comment
Спасибо @neildaemond. Теперь я пытаюсь реализовать это в Node, чтобы принимать значение из клиентского браузера и получать ту же проблему :( stackoverflow.com/questions/27174971/ - person user3197788; 27.11.2014