gpt4 book ai didi

javascript - 使用 DES (Node.js) 将数据传递到 Cipher.update 时丢失数据

转载 作者:行者123 更新时间:2023-12-02 14:17:23 26 4
gpt4 key购买 nike

这是交易:

我有一个如下结构的数据缓冲区:

[39字节的header] + [body] + [padding](由我计算)。如果我将它保存到文件中,我实际上可以识别结构,并且一切看起来都很好。

然后,我必须对这个缓冲区进行 DES-CBC 加密,我要做的是

a) 实例化具有 key 的 DES 包装器,并计算新的 IV(它创建的 Cipher 对象上的 autoPadding: false 也是如此)
b) 将缓冲区传递给 DES 包装器
c) 然后缓冲区被加密,如下所示:(data是缓冲区,en是Cipher对象)

var buf1 = en.update(data);

当我在文件上输出 buf1 时(然后,在我的例子中,在套接字上)并检索它的字节,然后解密它,我获得以下结构:[ header ][正文]但是当我在文件上输出数据并检索它的字节时,我得到了起始结构。我知道我还应该将 en.final() 附加到 buf1,但就我而言,我不需要这些值,而且 autoPadding 为 false 时,它​​只会抛出一个错误。

最佳答案

API 为您提供了一份契约(Contract)。合约的属性之一是您需要在完成加密后调用 Cipher#final([output_encoding])。即使填充不需要由 Cipher 实例处理,代码也是为了可重用性而编写的,因此无论填充选项如何,都希望以相同的方式使用。

关于javascript - 使用 DES (Node.js) 将数据传递到 Cipher.update 时丢失数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38920323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com