私は暗号化された形式でファイルを格納するためのWebアプリケーションを作成していますが、後で非PHP環境で解読することができます。つまり、ユーザーがdoc.pdf
という名前のファイルをアップロードしたとします。 それは暗号化され、暗号化された形式でサーバーに格納されます。その後、ユーザは、暗号化されたファイルを後でダウンロードし、自分のシステム上で解読することができる。PHPで外部プログラムを実行する効率的な方法は?
phpのmcrypt拡張を使って暗号化されたファイルは移植できないので、私は "encrypt"と呼ばれるプログラムを書くことにしました。それから私は、PHPでそれを呼び出す:
$return_var=exec("encrypt $file_path $key");
さて、私が考える別の方法は、基本的にソケットを介して要求を聴取する機能を備えた暗号化プログラムのラッパーである暗号化サーバを作成することでした。それで、PHPスクリプトがファイル名と暗号化する鍵を提供するようにこのプログラムに要求するようになりました。
暗号化サーバプログラムを別のコンピュータに置くことで、暗号化プロセスの負荷を簡単に調整できるため、これはもっと柔軟なアプローチになると思いました。
私の質問は、2つのアプローチのどちらが効率的であるか(速度、クライアントの大量の処理などに関して)ですか?
暗号化を実行するものに着信データをストリーミングしてから直接ディスクに書き込むことができれば、本当に完済します。バッチプロセスであるかのようにファイルを処理することは、データをX回だけメモリにロードする必要があり、おそらくはディスクからでもロードする必要があるため、効率が低下します(潜在的に危険です)。 –