0

ここで何が間違っているのかを理解するのに苦労しています。

TCP ソケットに出入りするデータを暗号化するために何かを書き込もうとしていますが、暗号暗号ストリームから出力を取得するのに苦労しています。

例: (できるだけシンプルにするために簡略化しています)

crypto = require('crypto');


data.copy(cipherKey,0,5,133); //暗号パスワード用の 128 バイトのデータで満たされたバッファ。(これを単純にするためにデータのソースを取り除いています)
//test value (in hex bytes) of cipherKey = abcecfa8c752b72d784db7ddbc30db7da2b22ba7eab9000f2615e26d55a6b27f1ad97239151e1b6398afa055e347571aa018332bef041d032b73e5c23e48407d1e288f8c8edcadd6a70f6f1031cf4778b037b8beaed4863d5ac2e6f4cf454a87ece5051a49d11a2b9a89bf955cbf54a22f05405c43f20f4d4bf26bd2e928189d

var credentials = { アルゴリズム: "aes128", パスワード: cipherKey.toString() };

var decipher = crypto.createDecipher(credentials.algorithm, credentials.password);
var cipher = crypto.createCipher(credentials.algorithm, credentials.password);

cipher.pipe(プロセス.stdout);

cipher.write("こんにちは!");

cipher.write("Hello!"); を繰り返すことで、(ごくわずかですが)出力を得ることができました。約10回の行で、出力を「トリガー」する前に最小限のデータを入力する必要があるかどうか疑問に思います。

これが問題である場合は、これを通過する必要があるほとんどのパケットが 4 ~ 32 バイトになるため、回避策を見つける必要があります。(ただし、一部は大きくなる可能性もありますが、ほとんどはそうではありません)

助言がありますか?

(私はノードを初めて使用するので、愚かなことを事前にお詫びします!)

4

1 に答える 1

3

はい、ここでバッファリングが行われています。これ以上データがなくなることを暗号ストリームに知らせるだけで、それ自体がフラッシュされます。

あなたの例では、追加するだけです

cipher.end()
于 2013-11-04T06:28:20.383 に答える