0

同じソフトの別のインスタンスにデータを送信する前にデータを暗号化する必要があるソフトウェアを開発します(もちろん復号化する必要があります)。私は最初に 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 サーバーに配置され、暗号化する必要があります。

ありがとう、
セドリック

4

1 に答える 1

0

SCPまたはSFTPを使用するだけです。実際のデータ送信にはSSLを使用するため、暗号化機能を自動的に取得します。ファイルを暗号化された状態で保存する必要がある場合は、mcryptとその仲間を使用して暗号化を行う必要があります。

「データはキーより小さくなければならない」に関しては、ワンタイムパッドの状況でのみ適用されます。最新の暗号には、基本的に、暗号化されるデータよりも小さいキーがあります。大きなRARまたはZIPファイル(数メガバイトのデータ)を考えてみてください。ただし、キー(パスワード)のサイズはわずか数文字です。

于 2011-07-19T15:52:33.480 に答える