Я пытаюсь выполнить шифрование AES CBC с нулевым заполнением строки запроса URL.Я использую основной криптомодуль NodeJS.Это для использования с http://www.blackoutrugby.com/game/help.documentation.php#category=35
У меня есть ключ и IV.При тестировании следующей функции я не получаю строку, возвращаемую полностью.Я считаю, что это связано с заполнением, но я не уверен, как правильно применять его.
Если это заполнение, может кто-нибудь показать мне, как я должен применять его?Если нет, то где я иду не так?Также имеет значение cipher.final () для этого пользовательского случая?
Обновление: Я сейчас включил cipher.final (), и все отлично работает с двоичным форматом, но base64 дает мне усеченныйрезультат.https://github.com/denishoctor/BlackoutRugbyNode/blob/master/crypto2.js - мой полный пример кода.Ниже приведена криптографическая функция:
function cryptoTest(data, key, iv, format) {
var cipher = crypto.createCipheriv('aes-128-cbc', key, iv);
var cipherChunks = [];
cipherChunks.push(cipher.update(data, 'utf8', format));
cipherChunks.push(cipher.final());
var decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
var plainChunks = [];
for (var i = 0;i < cipherChunks.length;i++) {
plainChunks.push(decipher.update(cipherChunks[i], format, 'utf8'));
}
plainChunks.push(decipher.final());
return {
"encrypted": cipherChunks.join(''),
"decrypted": plainChunks.join('')
};
}
Спасибо,
Денис