Мне нужна комбинация функций, которая выполняет:
- сериализация массива (без объекта, маленький - 3-7 пар ключ-значение строк, без ссылок)
- достоверность данныхпроверка выше (лучше ли, чтобы хеш был внутри массива?)
- шифрование выше (есть ли метод шифрования, который проверяет дешифрованную информацию?)
- сжатие выше (яне уверен, стоит ли стоимость: пропускная способность / время процессора)
... массива.
Все должно быть оптимизировано для скорости.
Для сериализациимассив я думал об использовании json_encode (), а не serialize (), потому что это быстрее.См. Предпочтительный способ хранения массивов PHP (json_encode vs serialize) .
Для проверки достоверности данных я думал об использовании sha1 (), но я рассматриваю crc32, потому что это быстрее, и я неЯ думаю, что столкновения близки.См. Самый быстрый хеш для некриптографического использования? .
Для шифрования я сделал:
<?php
function encode($pass, $data) {
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $pass, $data, MCRYPT_MODE_ECB);
}
function decode($pass, $data) {
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $pass, $data, MCRYPT_MODE_ECB);
}
$rand = str_repeat(rand(0, 1000), 5);
$start = microtime(true);
for($i = 0; $i <= 10000; $i++){
encode('pass', $rand);
}
echo 'Script took ' . (microtime(true) - $start) . ' seconds for encryption<br/>';
$start = microtime(true);
for($i = 0; $i <= 10000; $i++){
encode('pass', $rand);
}
echo 'Script took ' . (microtime(true) - $start) . ' seconds for decryption';
Результаты:
Script took 1.8680129051208 seconds for encryption
Script took 1.8597548007965 seconds for decryption
Я быскорее избегайте любой случайности.Я знаю, что режим CBC более безопасен, но он также медленнее.
Для сжатия я понятия не имею, что лучше использовать, учитывая тот факт, что полученная строка является двоичной и короткой.
Есть ли сжатие, которое не требует кодирования, чтобы установить результирующую строку как cookie?Я знаю, что sha1 (), например, возвращает только цифры и буквы.
Это сложный вопрос.Поэтому не стесняйтесь указывать на что-то неправильное или неточное.Он содержит много тем, но в основном короткий вопрос заключается в том, как безопасно и быстро зашифровать / расшифровать массив при небольшом его представлении.
Это правильный порядок?
Требуется ли проверка данныхучитывая, что существует высокая вероятность того, что результирующий JSON
не будет действительным в случае изменения данных?
Есть ли функция, которая уже объединяет эти или некоторые из этих функций?