Крипт большого количества данных в PHP - PullRequest
0 голосов
/ 19 июля 2011

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

Спасибо
Седрик

1 Ответ

0 голосов
/ 19 июля 2011

Просто используйте SCP или SFTP.Они будут использовать SSL для фактической передачи данных, поэтому вы получите шифрование автоматически.Если вам нужно хранить файлы в зашифрованном состоянии, вам придется использовать mcrypt и его друзей, чтобы выполнить шифрование для вас.

Что касается «данных должно быть меньше ключа», то толькоприменяется в ситуации с одноразовым блокнотом.Современные шифры, в сущности, всегда имеют ключи, которые меньше, чем зашифрованные данные ... представьте себе большой RAR или ZIP-файл - многомегабайтные данные, но ключ (пароль) размером всего несколько символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...