Метод 1: использование функции sha1_file()
Функция sha1_file() — это встроенная функция PHP, которая вычисляет хэш SHA1 файла. Он принимает путь к файлу в качестве входных данных и возвращает хеш в виде шестнадцатеричной строки из 40 символов. Вот пример использования:
$file = '/path/to/file.txt';
$hash = sha1_file($file);
echo "SHA1 hash of $file: $hash";
Метод 2: чтение файла вручную
Если вы предпочитаете более ручной подход, вы можете прочитать содержимое файла, а затем вычислить хэш SHA1 с помощью функции sha1(). Вот пример:
$file = '/path/to/file.txt';
$contents = file_get_contents($file);
$hash = sha1($contents);
echo "SHA1 hash of $file: $hash";
Метод 3: Чтение по частям
Для больших файлов рекомендуется читать файл по частям, чтобы избежать проблем с памятью. Вот пример, демонстрирующий этот подход:
$file = '/path/to/largefile.mp4';
$chunkSize = 8192; // 8KB per chunk
$handle = fopen($file, 'rb');
$hash = sha1('');
while (!feof($handle)) {
$chunk = fread($handle, $chunkSize);
$hash = sha1($chunk, $hash);
}
fclose($handle);
echo "SHA1 hash of $file: $hash";
Метод 4: использование функции hash_file()
PHP предоставляет функцию hash_file()более общего назначения, которая поддерживает несколько алгоритмов хеширования, включая SHA1. Вот пример:
$file = '/path/to/file.txt';
$hash = hash_file('sha1', $file);
echo "SHA1 hash of $file: $hash";
Метод 5: потоковая передача файла
Если вы имеете дело с очень большими файлами и вам не хватает памяти, вы можете выполнить потоковую передачу файла с помощью потоков PHP. Вот пример:
$file = '/path/to/largefile.mp4';
$context = stream_context_create(['sha1' => ['algorithm' => 'sha1']]);
$stream = fopen($file, 'rb', false, $context);
$hash = stream_get_meta_data($stream)['wrapper_data']['sha1'];
fclose($stream);
echo "SHA1 hash of $file: $hash";
В заключение, вычислить хэш SHA1 файла в PHP можно разными способами. Предпочитаете ли вы использовать встроенные функции, такие как sha1_file(), или более ручные подходы, такие как чтение содержимого файла, теперь в вашем распоряжении целый ряд методов. Выберите тот, который лучше всего соответствует вашим потребностям, и с легкостью обеспечьте целостность данных и безопасность файлов.