OpenSSL文本最大大小?

时间:2018-05-31 16:43:51

标签: php encryption openssl php-openssl

使用OpenSSL我已经创建了一个基本的加密/解密类。我的目标是加密通过http发送到远程web_service或从远程web_service发送的文本(JSON)。 (是的,我知道我可以使用https代替,但是在这种情况下不会使用它的某些技术限制)

class Crypt {
   static private $default_method = "aes-256-cbc";

   public static function doEncrypt($text_to_encrypt) {
      // ...some preparation stuff here
      $result = base64_encode(openssl_encrypt($text_to_encrypt, self::$default_method, $seckey, OPENSSL_RAW_DATA, $iv));
      return $result;
    }

   public static function doDecrypt($encrypted_text) {
      // ...some preparation stuff here
      $result = openssl_decrypt(base64_decode($encrypted_text), self::$default_method, $seckey, OPENSSL_RAW_DATA, $iv);

      return $result;
   }
}

我使用不同大小的文本进行了许多测试,并且工作正常。但是......限制在哪里?

我怀疑:

text_to_encrypt最大尺寸的限制在哪里?在我的测试中,我使用高达100Mb的文本正常工作。随着更大的文本我得到http超时错误...但这是由于我当前的测试服务器限制。我知道我可以修改它,或者我可以寻找更强大的服务器来处理更快。

如果我有无限的处理能力,瓶颈会在哪里?什么会设置text_to_encrypt最大尺寸的限制?加密/解密过程会在某些时候失败吗? PHP将是限制吗?

这是我测试的方式:

define("_MIN_SIZE", 10000); // size of text, in bytes
define("_MAX_SIZE", 250000);    // size of text, in bytes
define("_SIZE_INCREASE", 1033); // size incresase for tests, in bytes

echo '<h2>Test encrypt/decrypt</h2>';
for($i = _MIN_SIZE; $i < _MAX_SIZE; $i = $i + _SIZE_INCREASE){
    $string = generateRandomString($i);
    $encstr = crypt::doEncrypt($string);
    if($string != ($descstr = crypt::doDecrypt($encstr) ) ){
        echo "<p style='color: red'>ERROR!".strlen($string);

    } else {
        echo "<p style='color: green'>OK ".strlen($string);

    }
    echo '</p>';
}
echo '<h2>Done!</h2>';

function generateRandomString($length = 25) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-.,_:;<>çÇ´`ñÑáÁàÀéÉèíÍìÌïÏóÓòÒúÚùÙüÜ¿?=)(/&%$·"!ªº@|¡+[]{}€';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}
  

注意:我知道有关完整数据的一些缺失部分   流程。即验证,如评论中所指出的,seckey   和iv生成和管理等)。但为了简单起见,我   没有在问题中显示整个过程。我关心的是   使用OpenSSL在PHP中加密字符串的大小限制在哪里。

0 个答案:

没有答案