node.js加密流不提供输出

时间:2013-11-04 05:19:55

标签: node.js encryption node-crypto

我很难理解我在这里做错了什么。

我正在尝试编写一些内容来加密进出TCP套接字的数据,但我很难从加密密码流中获取任何输出。

示例:(剥离以保持尽可能简单)

crypto = require('crypto');


data.copy(cipherKey,0,5,133); //buffer filled with 128 bytes of data for cipher password.  (source of data stripped out to keep this simple)
//test value (in hex bytes) of cipherKey = abcecfa8c752b72d784db7ddbc30db7da2b22ba7eab9000f2615e26d55a6b27f1ad97239151e1b6398afa055e347571aa018332bef041d032b73e5c23e48407d1e288f8c8edcadd6a70f6f1031cf4778b037b8beaed4863d5ac2e6f4cf454a87ece5051a49d11a2b9a89bf955cbf54a22f05405c43f20f4d4bf26bd2e928189d

var credentials = { algorithm: "aes128", password: cipherKey.toString() };

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

cipher.pipe(process.stdout);

cipher.write("Hello!");

我设法通过重复cipher.write(“Hello!”)来获得一些输出(尽管很少);行大约10次,这让我想知道你是否必须在“触发”某些输出之前输入最少量的数据。

如果这是问题,那么我需要找到解决方法,因为大多数需要通过它的数据包将在4到32个字节之间。 (虽然有些人可能也很大,但大部分都没有)

有什么建议吗?

(我是节点新手,所以我提前为任何愚蠢道歉!)

1 个答案:

答案 0 :(得分:3)

是的,这里有缓冲。只是让你的加密流知道没有更多的数据,它会冲洗自己。

在您的示例中,只需添加

即可
cipher.end()