2013-10-21 109 views
1

我想在保存之前使用PHP函數openssl_private_encrypt()加密上傳的文件(請參閱下面的代碼片段),但是它的布爾返回false並且加密的內容返回沒有任何回報。沒有顯示或報告錯誤。openssl_private_encrypt()返回false,輸出爲0

 $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); 

有沒有人有任何想法,爲什麼這是行不通的?

感謝

+0

你怎麼初始化$關鍵?檢查它是否正確resorurce(var_dump($ key)) – ziollek

+0

$ key被拉爲file_get_contents('key.pem'); –

回答

3

我不知道PHP,但在C/C++(OpenSSL的)的非對稱加密(RSA爲主)與長度小於密鑰大小數據的工作。通常它用於加密散列值。如果你想加密大量的數據(更多〜256字節),你最好使用像AES或TriDES這樣的對稱(塊)密碼。對稱密碼的速度要快得多。

PS抱歉,我沒有足夠的知名度將此帖發表評論。

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); 
相關問題