【问题标题】:Forge: Encrypt large fileForge:加密大文件
【发布时间】:2014-04-25 21:17:04
【问题描述】:

我使用forge framework 来实现某种PGP。所以我需要加密非常大的文件(2gb 或更多)并保持加密。我想使用尽可能小的 RAM 内存。

最好的方法是什么?

【问题讨论】:

    标签: javascript node.js cryptography forge


    【解决方案1】:

    这是一个普遍的设计问题——与锻造没有太大关系。正如MDG 所说,您需要使用流式传输来避免将整个文件和加密文件保存在内存中。

    Forge 的密码对象(参见:AES)将允许您使用流中的数据块。您可以使用cipher.update() 从流中加密任意大小的数据块,然后调用cipher.output.getBytes() 清除内部缓冲区并获取任何加密输出,然后您可以将其发送到某处。这应该会降低您的内存使用率。

    请记住,您从伪造缓冲区获取的字节将被编码为字符串。字符串编码类型是 node.js 识别为“二进制”的类型。 (对于不支持 TypedArrays 的浏览器,这是一种在 JS 字符串中编码字节的方法,许多浏览器在首次编写 forge 时不支持)。如果您正在与 node.js 服务器通信,则可以使用“二进制”编码将此字符串放入 Buffer 中。如果您正在与另一台服务器通信,您可能希望在传输之前对它们进行 base64 编码。您可以使用forge.util.encode64 执行此操作。

    您可能还想查看OpenPGP.js

    【讨论】:

      【解决方案2】:

      加密大文件应该是基于流的,以减少内存使用,您可以查看 node 内置的crypto 模块或在 npm 上尝试不同的包(例如file-encryptor

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 1970-01-01
        • 2011-08-03
        • 2019-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        相关资源
        最近更新 更多