ホームページ  >  記事  >  バックエンド開発  >  cipher.AEAD.Seal() を使用してメモリ使用量を表示する

cipher.AEAD.Seal() を使用してメモリ使用量を表示する

WBOY
WBOY転載
2024-02-06 10:03:03968ブラウズ

使用 cipher.AEAD.Seal() 查看内存使用情况

質問内容

Go の ChaCha20-Poly1305 実装を使用してデータを暗号化していますが、いくつかの大きなファイルを暗号化すると、メモリ使用量が My の暗号化よりも高くなります。期待。私の知る限り、Go の AEAD 暗号の実装は、ハッシュを作成するためにデータ全体をメモリ内に保持する必要があることを意味しますが、メモリ使用量は平文サイズの 2 倍になります。

4 GiB のデータを暗号化しようとする次の小さなプログラムは、これを強調しています (実際のプログラムでは、keynonce は空であってはなりません)。 リーリー

crypto/cipher/gcm.go (AES-GCM と ChaCha20-Poly1305 の両方で使用) のソース コードによると、次のコメントがあります。 リーリー これは、メモリを再利用できるはずであることを意味します。これを実行してみましたが、アプリケーションで使用されるメモリの量には影響しません。

Seal()

を呼び出した後は、常に結局、8 GiB のメモリで 4 GiB のデータを暗号化できますか? リーリー (暗黙的に) メモリを再利用する場合、AEAD 暗号が暗号文に追加する比較的小さなハッシュ以外に大幅な増加は期待できないでしょうか?

正解

暗号文に追加された認証トークンを考慮するのを忘れていました。初期割り当てでスペースを確保した場合、それ以上の割り当ては必要ありません:
リーリー

以上がcipher.AEAD.Seal() を使用してメモリ使用量を表示するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。