2

通常、openssl_encryptPHP で AES を使用して単純な文字列を暗号化するために使用しますが、これはかなりうまく機能します。

ここで、AES-256-CTR モードでファイルを暗号化する必要がありますが、これを行う唯一の方法file_get_contentsは、ファイルのコンテンツ全体を暗号化してから、openssl_encrypt関数に送信して実際のファイル データを暗号化することです。問題は、メモリの重大な浪費のため、この方法が非常に「貧弱」であることです。

1) PHP OpenSSL でチャンク データを処理する方法はありますか?

例えば:

<?php
// ...
$f = fopen('large.iso','r');
  while(feof($f)){
    $chunk = fread($f,16);
       $cipher = openssl_encrypt(...$chunk...);
    // ... code ...
   }
    // ... more code ...
?>

2)openssl_encrypt公式ドキュメントはまだ公開されていません。AES-CTRモードで使用する関数のパラメーターの意味を誰かが明確にすることができますか? カウンターは自動的に処理されますか? 関数によって返されたデータに手動で XOR を適用する必要がありますか?

注: これはプロのプロジェクトなのでphpseclib、他の人の「匿名」ライブラリを使用したくありません。また、コマンド ラインも使用したくありません。

4

2 に答える 2