Как использовать id -aes256 -GCM с криптографией Node.JS? «TypeError :Ошибка DecipherFinal»

Я хочу зашифровать некоторые данные в Node.js, используя схему шифрования с проверкой подлинности, например AES -GCM.

Если я запускаю следующий пример кода

app.get("/test", function(req,res)  {
  var key = "12345678901234567890123456789012";
  var iv = "123456789012"; 
  var cipher = crypto.createCipheriv("id-aes256-GCM",key.toString("binary"),iv.toString("binary"));
  var decipher = crypto.createDecipheriv("id-aes256-GCM",key.toString("binary"),iv.toString("binary"));

  console.log(decipher.update(cipher.update("bla")));
  console.log(decipher.update(cipher.final()));
  console.log(decipher.final());
});

Я не получаю вывод консоли, но сообщение об ошибке «TypeError :DecipherFinal failed». Если я использую шифр AES -256 -CTR вместо «id -aes256 -GCM», этот код работает нормально и печатает «bla» на консоли.

Что я делаю не так?

редактировать:

Дальнейшее исследование показывает, что cipher.update ("bla" )возвращает "â" (одиночный символ... странно ), а cipher.final ()возвращает пустую строку. Я думаю, что это не может быть правильный зашифрованный текст, который должен иметь хотя бы размер открытого текста...

16
задан rook 2 December 2012 в 22:27
поделиться