2

PHP 関数 openssl_private_encrypt() を使用して、アップロードされたファイルを保存する前に暗号化しようとしています (以下のコード スニペットを参照)。エラーは表示または報告されていません。

        $data = file_get_contents($_FILES['files']['tmp_name'][0]);

        openssl_private_encrypt($data,$encrypted,$key);

        $hash = sha1($encrypted);
        file_put_contents('/path/to/folder/'.$hash,$encrypted);

なぜこれがうまくいかないのか、誰にもアイデアはありますか?

ありがとう

4

2 に答える 2

5

PHPについてはわかりませんが、C / C ++(OpenSSL)の非対称暗号化(主にRSA)では、キーサイズよりも短い長さのデータで機能します。通常、ハッシュ値の暗号化に使用されます。大量の (~256 バイト以上の) データを暗号化する場合は、AES や TriDES などの対称 (ブロック) 暗号を使用することをお勧めします。ちなみに、対称暗号ははるかに高速です。

PS申し訳ありませんが、この投稿をコメントに入れるのに十分な評判がありません.

于 2013-10-22T08:47:40.900 に答える
1

秘密鍵を適切に初期化する必要があります(http://pl1.php.net/manual/en/function.openssl-pkey-get-private.php

$key = openssl_pkey_get_private ('file://path/to/file.pem');
$data = file_get_contents($_FILES['files']['tmp_name'][0]);

openssl_private_encrypt($data,$encrypted,$key);

$hash = sha1($encrypted);
file_put_contents('/path/to/folder/'.$hash,$encrypted);
于 2013-10-22T10:32:57.423 に答える