状态
我有一个大的数据数组(大约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。如果我只是在数千个字符串上循环,这个代码可能会很慢。
你能建议一种更具表演性的方式吗?
serialize()
您的阵列。序列化的结果是一个二进制字符串,mcrypt_encrypt
可以接受该字符串-
用一个函数调用加密序列化数组,
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);
-
不需要对传递给
mcrypt_encrypt
的数据进行base64编码。