數據我開發具有隱窩數據之前將其發送到相同的軟(有解密它當然)的另一個實例軟件。我先用openssl_public_encrypt/openssl_private_decrypt,像地穴大量的PHP
foreach(str_split($sData, MAXSIZE) as $sChunk)
{
if(! @openssl_public_encrypt($sChunk, $crypted, $sPublicKey)) throw new Exception('openssl_public_encrypt');
$aCrypted[] = $crypted;
}
和
$sResult = '';
foreach($aCrypted['data'] as $ct => $sChunkCrypted)
{
if(! openssl_private_decrypt($sChunkCrypted, $sChunk, $sPrivateKey)) throw new Exception("decrypt");
$sResult .= $sChunk;
}
由於數據塊加密不能比的關鍵較大,但解密部分花費太多時間(Xdebug的告訴我,這是對openssl_private_decrypt()的調用,它需要所有的時間)。
我嘗試與對稱算法mcrypt_decrypt/MCRYPT_RIJNDAEL_256(與OpenSSL的隱窩的關鍵),但它更糟糕。我能做些什麼以安全的方式傳輸大量數據?文件是CSV(文本)並放在SSH/SFTP服務器上,它們必須被加密。
感謝,
塞德里克
爲什麼不使用[SCP(http://php.net/manual/en/function.ssh2-scp-send.php)? –
因爲我需要隱藏數據,即使服務器之間的副本是安全的,並且SFTP的安全性也不比SCP低。對? –
當然,SFTP也很好。如果您需要加密存儲的數據,爲什麼不在文件系統級別執行?如果性能是一個問題,這應該比任何你可以用PHP編寫的任何東西都快。如果這聽起來像你想探索的東西,看看[eCryptfs](https://launchpad.net/ecryptfs)。 –