Я разрабатываю программное обеспечение, которое должно шифровать данные, прежде чем отправлять их другому экземпляру того же программного обеспечения (которое, конечно, должно его расшифровать). Я сначала использую 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, они должны быть зашифрованы.
Спасибо,
Седрик