5

2 つのバッファーを渡す暗号を作成します。buf1 はキーであり、32 バイトのバッファーであり、IV である buf2 も 32 バイトのバッファーであり、16 バイトのみを使用するようにスライスします。ドキュメントによると、何も指定されていない場合、cipher.update と cipher.final はバッファを返します。それが実際に私が望んでいることです。new Buffer(crypted, 'binary') を実行して変換できると思いますが、何か間違っているのではないかと思います。

> 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 ではドキュメントに記載されているようにバッファを返すことを知っています。バイナリを使用する代わりに、暗号化がバッファでもすべて機能することを望んでいました...一貫性のために。

4

1 に答える 1