2

openssl_encrypt次のように、コマンドラインから使用してファイルを暗号化するためのソリューションを見てきました。

file_put_contents ('./file.encrypted',openssl_encrypt ($source, $method, $pass, true, $iv));

$exec = "openssl enc -".$method." -d -in file.encrypted -nosalt -nopad -K ".strtohex($pass)." -iv ".strtohex($iv);

または、openssl_encrypt次のように文字列を暗号化するために使用します。

$string = 'It works ? Or not it works ?';
$pass = '1234';
$method = 'aes128';
file_put_contents ('./file.encrypted', openssl_encrypt ($string, $method, $pass));

しかし、コードから直接ファイルを暗号化するためのものではありません。何故ですか ?

コマンド ラインを使用する場合のように、ファイルごとに個別のプロセスを開くのではなく、コードから 2 ~ 10 MB のファイルを暗号化したい場合はどうすればよいですか?

次のようなコード例を探しています。

$myfile = 'files/myfile.doc';
$pass = '1234';
$method = 'aes128';
file_put_contents ('./file.encrypted', openssl_encrypt ($myfile, $method, $pass));

ありがとう

4

1 に答える 1

0

file_get_contents() を使用してファイルを変数に読み込み、openssl_public_encrypt() を使用して暗号化し、fopen()、fwrite() および fclose() を使用してディスクに保存できない理由はありませんが、おそらく制限があります。このアプローチでメモリにロードできるファイルのサイズ。

スクリプト内でファイル暗号化を実行すると、パフォーマンスのオーバーヘッドが発生する可能性もありますが、これは十分に簡単にテストできるはずです。

于 2012-07-26T20:31:34.617 に答える