我正在編寫一個用於以加密形式存儲文件的web應用程序,但稍後可以在非php環境中進行解密。因此,假設用戶上傳了一個名爲doc.pdf
的文件。 然後它以加密形式加密並存儲在服務器上。然後用戶可以稍後下載加密的文件並在他/她的系統上對其進行解密。在PHP中執行外部程序的有效方法?
因爲使用php的mcrypt擴展加密的文件是不可移植的,所以我決定用c編寫一個名爲「encrypt」的程序。然後,我調用它在PHP:現在
$return_var=exec("encrypt $file_path $key");
,我認爲的另一種方法是創建一個加密的服務器基本上是與周圍聆聽通過套接字請求的能力的加密程序的包裝。所以我們可以說php腳本現在會向這個程序發出一個請求,提供一個文件名和要加密的密鑰。
我認爲這可能是一種更靈活的方法,因爲通過將加密服務器程序放在另一臺計算機上,可以輕鬆調整加密過程的負載。
現在,我的問題是兩種方法中的哪一種方法是有效的(就速度而言,處理大量客戶等)?
如果您可以將傳入的數據流式傳輸到執行加密的某些內容,然後直接將其寫入磁盤,那麼它真的會得到回報。處理文件就好像它是一個批處理過程一樣,效率要低得多,因爲你必須將數據加載到內存中X次,甚至可能從磁盤加載(這也可能是不安全的)。 – 2012-01-08 13:57:36