Whats是用PHP中的AES加密大数组的最佳方法


Whats is the best way to encrypt a big array with AES in PHP?

状态

我有一个大的数据数组(大约2000个字符串,每个字符串有2000个字符(要使用对称加密AES进行加密。

我的代码目前如下:

加密功能

function encryptAES($content, $key) {
    $iv = mcrypt_create_iv(256, MCRYPT_DEV_RANDOM);
    $iv_base64 = rtrim(base64_encode($iv), '=');
    $encrypted = base64_encode(mcrypt_encrypt(
         MCRYPT_RIJNDAEL_256, 
         $key, 
         $content . md5($content), 
         MCRYPT_MODE_CBC, 
         $iv
    );
    return  $iv_base64 . $encrypted;
}

阵列加密

foreach ($fields as $field) {
   $field['encryptedValue'] = encryptAES($field['value'], $SymKey);
}

问题

只有字符串可以传递给$content。如果我只是在数千个字符串上循环,这个代码可能会很慢。

你能建议一种更具表演性的方式吗?

  1. serialize()您的阵列。序列化的结果是一个二进制字符串,mcrypt_encrypt可以接受该字符串
  2. 用一个函数调用加密序列化数组,base64结果:

    $myArray = [ ... ];
    $content = serialize($myArray);
    $iv = mcrypt_create_iv(256, MCRYPT_DEV_RANDOM);
    $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $content, MCRYPT_MODE_CBC, $iv);
    
  3. 不需要对传递给mcrypt_encrypt的数据进行base64编码。