【问题标题】:node.js crypto streams not giving outputnode.js 加密流不提供输出
【发布时间】:2013-11-04 05:19:54
【问题描述】:

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

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

示例:(精简以使其尽可能简单)

加密 = 要求('加密'); 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(process.stdout); cipher.write("你好!");

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

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

有什么建议吗?

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

【问题讨论】:

    标签: node.js encryption node-crypto


    【解决方案1】:

    是的,这里有缓冲。只需让您的加密流知道不会再有任何数据,它会自行刷新。

    在您的示例中,只需添加

    cipher.end()
    

    【讨论】:

    • 感谢您抽出宝贵时间回答 Nitzan。调用 .end() 是否意味着我需要再次调用 createCipher 来加密下一个数据包?
    • 确实如此。我假设您的“数据包”是独立的,并且您希望它们独立加密。如果是这种情况,那么在每个之后 end() 并为下一个创建一个新密码。如果您的数据包包含一个流,那么在最后一个之后是end()
    • 我认为我确实需要它成为一个流,但我需要每个数据包的响应,然后再发送下一个数据包,所以我想使用 .end() 对我不起作用。您已经确定了我的问题,所以我将问题标记为已回答,因为我只是在问为什么我没有看到任何输出并且您已经回答了。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 1970-01-01
    • 2013-09-27
    • 2017-07-10
    • 1970-01-01
    • 2020-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多