Node.js: неправильный криптографический вывод - PullRequest
1 голос
/ 24 августа 2011

Node.js странным образом выдает мне неправильный вывод при расшифровке закодированного в шестнадцатеричном формате вывода AES128.

function decrypt_data( data, key, iv )
{
    var dc = crypto.createDecipheriv( 'aes-128-cbc', hex_to_str(key), hex_to_str(iv) );
    var res = dc.update( data, 'hex', 'utf8' );
    res += dc.final( 'utf8' );

    console.log(res);

    return res;
}

Эта функция, похоже, полностью в порядке, все тесты пройдены.Но когда я вызываю его с сервера реального узла, он возвращает поврежденный вывод.

Хвост сообщения в порядке, но первые 32 символа - полная фигня.Примерно так:

�8���ro�&����AMD Accelerated Parallel Processing" : [ "Cayman", "Cayman", "AMD Phenom(tm) II X2 555 Processor" ] }, "request" : "hello", "version" : 1 }

Независимо от того, какой ввод он принимает, возвращаемое значение всегда неверно в первых 32 байтах.

1 Ответ

2 голосов
/ 24 августа 2011

Ваш код использует режим CBC.В этом режиме повреждение исходного фрагмента вывода часто может быть вызвано использованием неправильного IV.Тщательно проверьте, что вы используете точно тот же IV для шифрования и дешифрования.Это значит проверять его побайтово.

...