伪造:encryption大文件

我使用伪造框架来实现某种PGP。 所以我需要encryption非常大的文件(2GB或更多),并保持encryption。 我想用尽可能小的RAM内存。

什么是最好的办法呢?

这是一个普遍的devise问题,与锻造不太相关。 就像MDG说的那样,你需要使用stream式传输来避免将整个文件和encryption文件保存在内存中。

伪造的密码对象(请参阅: AES )将允许您从stream中消耗大量的数据。 您可以执行cipher.update()来encryptionstream中任意大小的数据块,然后调用cipher.output.getBytes()来清除内部缓冲区,并获取任何可以发送到某处的encryption输出。 这应该保持你的内存使用率低。

请记住,从伪造缓冲区获得的字节将被编码为一个string。 string编码types是node.js认为是“二进制”的。 (这是在不支持TypedArrays的浏览器的JSstring中编码字节的一种方法,许多浏览器在伪造第一次写入时并不支持)。 如果您正在与node.js服务器交谈,则可以使用“二进制”编码将该string放入Buffer 。 如果您正在与另一台服务器交谈,则可能需要在传输之前进行base64编码。 你可以使用forge.util.encode64来做到这forge.util.encode64

你可能也想看看OpenPGP.js 。

encryption大文件应该是基于内存使用率低的stream,你可以看看节点内置的encryption模块,或者在npm上尝试不同的包(例如file-encryptor )

Interesting Posts