Мне нужен разумный способ использовать PHP для проверки целостности большого количества файлов, находящихся ниже каталога на определенном сервере (большое число здесь означает 6000 и более).
В общем, я хочу знать, были ли они изменены. Решение, которое я придумал, состоит в том, чтобы вычислить хэш-значение всех файлов следующим образом:
$accnum = 1;
$modulo = PHP_INT_MAX >> 5;
foreach ($files as $file) {
$crc32 = crc32(md5_file($file));
$accnum = ($accnum % $modulo) * 31 + $crc32;
}
$hash = md5($accnum);
Затем я записываю хеш туда, куда злоумышленник не может добраться.
Затем, чтобы проверить наличие фальсификации, я пересчитываю хэш и сравниваю его с записанным значением. Если отличается, то я знаю, что хотя бы один из файлов был изменен.
Вопросы:
- Это разумный способ сделать это?
- Если нет, то как я могу контролировать целостность большого количества файлов?