簡體   English   中英

在 PHP 中加密大量數據

[英]Crypt large amount of data in PHP

我開發了一個軟件,它必須先加密數據才能將其發送到同一軟件的另一個實例(當然必須解密它)。 我首先使用openssl_public_encrypt / openssl_private_decrypt,像這樣

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 或 SFTP。 他們將使用 SSL 進行實際數據傳輸,因此您將自動獲得加密內容。 如果您需要將文件存儲在加密的 state 中,那么您必須使用 mcrypt 及其朋友為您進行加密。

至於“數據必須小於密鑰”僅適用於一次性填充的情況。 現代密碼本質上總是具有小於被加密數據的密鑰……想想大型 RAR 或 ZIP 文件 - 數兆字節的數據,但密鑰(密碼)只有幾個字符大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM