PHP에서 Hash_update_stream () 함수는 데이터 스트림 (예 : 파일)의 해시 값을 계산하는 데 매우 유용한 도구입니다. 이 기능은 일반적으로 파일의 무결성을 확인하고 전송 또는 스토리지 중에 파일이 변조되지 않도록하는 데 사용됩니다. 이 기사에서는 파일의 무결성을 확인하기 위해 hash_update_stream () 함수를 사용하는 방법을 소개합니다.
Hash_update_stream ()은 해시 컨텍스트의 값을 업데이트하기 위해 PHP가 제공하는 함수입니다. 주어진 데이터 스트림 (일반적으로 파일)을 처리하여 파일의 해시 값을 점차적으로 계산하는 것이 목적입니다.
구문은 다음과 같습니다.
bool hash_update_stream ( resource $context , resource $file_handle [, int $length = 8192 ] )
$ 컨텍스트 : Hash Context Resource, 일반적으로 Hash_Init () 함수에 의해 생성됩니다.
$ file_handle : 이미 열린 파일 핸들 (예 : fopen () 을 통해 열린 파일).
$ 길이 : 스트림을 읽을 때마다 읽는 바이트 수는 기본값이 8192 바이트입니다.
파일 무결성 검증은 스토리지 또는 전송 중에 파일이 수정되거나 손상되지 않도록하는 핵심 방법입니다. 많은 응용 프로그램 시나리오에서 파일 무결성을 보안 및 데이터 일관성에 중요합니다.
예를 들어, 서버에서 다운로드 한 파일이 전송 중에 변조되었는지 확인하거나 로컬로 저장된 파일이 손상되지 않았는지 확인할 수 있습니다. 이 시점에서 파일의 해시 값을 비교하여 파일이 동일하게 유지되는지 확인할 수 있습니다.
hash_update_stream ()을 사용하여 파일을 단계별로 읽고 해시 값을 계산할 수 있습니다. 이 접근법을 통해 파일 컨텐츠의 모든 부분이 처리되도록하고 파일의 전체 해시를 얻을 수 있습니다. 전송 또는 스토리지 중 언제든지 파일이 변경되면 해시 값이 변경되며 파일의 무결성을 감지하는 데 사용할 수 있습니다.
다음은 파일 무결성을 확인하기 위해 hash_update_stream () 함수를 사용하는 방법을 보여주는 간단한 예입니다.
<?php
// 해시 컨텍스트를 만듭니다
$context = hash_init('sha256');
// 파일을 엽니 다
$file_path = 'path/to/your/file.txt';
$file = fopen($file_path, 'rb');
if (!$file) {
die('无法파일을 엽니 다');
}
// 사용 hash_update_stream() 점차 파일의 해시 값을 계산합니다
while (!feof($file)) {
// 각각 읽습니다 8192 바이트 및 해시 값을 업데이트하십시오
hash_update_stream($context, $file, 8192);
}
// 파일의 최종 해시 값을 얻으십시오
$hash = hash_final($context);
// 출력 파일의 해시 값
echo "파일의 해시 값은입니다: " . $hash . "\n";
// 파일을 닫습니다
fclose($file);
// 이전에 파일의 올바른 해시를 저장했다고 가정합니다.
$correct_hash = '사전 저장된 올바른 해시 값';
// 파일 무결성을 확인하십시오
if ($hash === $correct_hash) {
echo "파일 무결성 확인이 통과되었습니다!\n";
} else {
echo "파일 무결성 확인에 실패했습니다!\n";
}
?>
이 예에서는 먼저 hash_init () 함수를 사용하여 해시 컨텍스트를 만듭니다. 그런 다음 파일을 열고 hash_update_stream () 함수를 사용하여 파일의 해시 값을 점차 계산합니다. 파일을 읽은 후 Hash_Final ()을 사용하여 파일의 최종 해시 값을 얻고 파일의 무결성을 확인하기 위해 이전에 저장된 올바른 해시 값과 비교합니다.
Hash_update_stream () 함수는 해시 계산을 위해 파일을 단계별로 읽는 것입니다. 이는 전체 파일을 한 번에 메모리에로드하지 않기 때문에 큰 파일을 처리하는 데 매우 유용합니다.
파일에 읽을 때 파일에 올바른 액세스 권한이 있는지 확인하십시오. 그렇지 않으면 파일이 열리지 않거나 읽지 못하게 할 수 있습니다.
Hash_update_stream () 은 파일 스트림, 데이터 스트림 및 기타 유형의 스트림에 적합하며 스트리밍 데이터의 해시 계산에 매우 편리하게 사용될 수 있습니다.
hash_init () : 해시 컨텍스트를 초기화하고 해시 알고리즘을 지정합니다 (예 : SHA256 ).
hash_update () : 해시 컨텍스트를 업데이트하는 데 사용되는 값.
hash_final () : 최종 해시 값을 가져옵니다.
Hash_update_stream () 함수를 사용하여 파일 무결성을 확인하는 것은 매우 효과적인 기술입니다. 파일을 점차적으로 읽고 해시 값을 계산함으로써 전송 및 스토리지 중에 파일이 변조되거나 손상되지 않도록 할 수 있습니다. 실제 응용 프로그램에서는이 메소드를 파일 다운로드, 업로드 확인 및 파일 무결성 검사와 같은 여러 시나리오에 적용 할 수 있습니다.