2

ある種の PGP 実現のためにフォージ フレームワークを使用しています。そのため、非常に大きなファイル (2 GB 以上) を暗号化し、暗号化しておく必要があります。できるだけ小さい RAM メモリを使用したい。

それを行う最良の方法は何ですか?

4

2 に答える 2

2

これは一般的な設計上の問題であり、鍛造とはあまり関係ありません。MDGが言ったように、ファイル全体と暗号化されたファイルをメモリに保持しないようにするには、ストリーミングを使用する必要があります。

Forge の暗号オブジェクト (参照: AES ) を使用すると、ストリームからデータのチャンクを消費できます。ストリームから任意のサイズのデータ​​のチャンクを暗号化しcipher.update()、呼び出しcipher.output.getBytes()て内部バッファーをクリアし、暗号化された出力を取得して、どこかに送信することができます。これにより、メモリ使用量を低く抑えることができます。

フォージ バッファから取得したバイトは文字列にエンコードされることに注意してください。文字列エンコーディング タイプは、node.js が「バイナリ」として認識するものです。(これは、TypedArrays をサポートしていないブラウザー用に JS 文字列内のバイトをエンコードする方法であり、Forge が最初に作成された時点では多くのブラウザーがサポートしていませんでした)。Buffernode.js サーバーと話している場合は、「バイナリ」エンコーディングを使用して、この文字列を に入れることができます。別のサーバーと通信している場合は、送信前に base64 エンコードすることをお勧めします。を使用してこれを行うことができますforge.util.encode64

OpenPGP.jsもチェックしてみてください。

于 2014-03-26T13:32:49.367 に答える
0

大きなファイルの暗号化は、メモリ使用量を少なくするためにストリーム ベースにする必要があります。ノードの組み込みの暗号モジュールを確認するか、npm でさまざまなパッケージを試すことができます ( file-encryptorなど)。

于 2014-03-19T14:55:32.017 に答える