Go の ChaCha20-Poly1305 実装を使用してデータを暗号化していますが、いくつかの大きなファイルを暗号化すると、メモリ使用量が My の暗号化よりも高くなります。期待。私の知る限り、Go の AEAD 暗号の実装は、ハッシュを作成するためにデータ全体をメモリ内に保持する必要があることを意味しますが、メモリ使用量は平文サイズの 2 倍になります。
4 GiB のデータを暗号化しようとする次の小さなプログラムは、これを強調しています (実際のプログラムでは、key
と nonce
は空であってはなりません)。
リーリー
crypto/cipher/gcm.go (AES-GCM と ChaCha20-Poly1305 の両方で使用) のソース コードによると、次のコメントがあります。
リーリー
これは、メモリを再利用できるはずであることを意味します。これを実行してみましたが、アプリケーションで使用されるメモリの量には影響しません。
を呼び出した後は、常に結局、8 GiB のメモリで 4 GiB のデータを暗号化できますか?
リーリー
(暗黙的に) メモリを再利用する場合、AEAD 暗号が暗号文に追加する比較的小さなハッシュ以外に大幅な増加は期待できないでしょうか?
以上がcipher.AEAD.Seal() を使用してメモリ使用量を表示するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。