Я создаю шифр, передающий два буфера. buf1 - это ключ, 32-байтовый буфер и buf2, который является IV, также представляет собой 32-байтовый буфер, который я нарезаю, чтобы использовать только 16 байт. Документация говорит, что cipher.update и cipher.final возвращают буфер, когда ничего не указано. Это на самом деле то, что я хочу. Хотя я предполагаю, что могу просто создать новый буфер (зашифрованный, «двоичный»), чтобы преобразовать его, мне интересно, могу ли я что-то делать неправильно.crypto.createCipheriv -> cipher.update + cipher.final не возвращает буфер?
> var cipher = crypto.createCipheriv('aes-256-cbc', buf1, buf2.slice(0,16));
undefined
> var crypted = cipher.update(new Buffer('this is some test'));
undefined
> crypted += cipher.final();
'!t\u001f\u0004>.\u0012\u0001���K\u001bSiA�]3\u0017�6�&�.��\u0015�V?'
0> Buffer.isBuffer(crypted)
false
http://nodejs.org/api/crypto.html#crypto_class_cipher
Я использую node.js версии 0.10.10, которая является последней стабильной и предположительно соответствует документации, связанный:
$ node -v
v0.10.10
Является ли это ошибка документации или ошибка с моей стороны? Я знаю, что с v0.8 pbkdf2 возвращает двоичную строку вместо буфера, а теперь с 0.10.10 возвращает буфер, как указано в документах. Я надеялся, что шифр также будет работать со всеми буферами вместо использования двоичных файлов ... для согласованности.
ах избили меня на 9 секунд! ;) – robertklep
Hahaha, второй раз сегодня :) http://stackoverflow.com/questions/16986660/javascript-variables-hoisting-in-nodejs-async/16986789 – matehat
Такова жизнь на SO! :) – robertklep