我开发了一个软件,它必须先加密数据才能将其发送到同一软件的另一个实例(当然必须解密它)。我首先使用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 服务器上,它们必须加密。
谢谢,
塞德里克