현재 위치: > 최신 기사 목록> PHP에서 파일 무결성 점검 구현 : Hash_Final과 함께 사용

PHP에서 파일 무결성 점검 구현 : Hash_Final과 함께 사용

gitbox 2025-05-20

실제 PHP 개발에서 파일 무결성 검사는 특히 파일 전송, 다운로드 또는 스토리지 절차 중에 파일이 변조되거나 손상되지 않도록하기 위해 매우 중요한 단계입니다. PHP는이를 달성하기위한 다양한 도구와 기능을 제공하며, 그 중 HASH_Final 기능은 매우 실용적인 도구입니다.

이 기사는 Hash_Final 함수를 사용하여 PHP에서 파일 무결성 검사를 수행하는 방법을 자세히 설명합니다.

hash_final 함수는 무엇입니까?

Hash_final 은 PHP의 해시 함수이며, 일반적으로 Hash_initHash_update 와 함께 사용하여 데이터의 해시 값을 생성합니다. 파일이나 데이터를 해시 해야하는 경우이 세 가지 기능을 사용하여 전체 프로세스를 완료 할 수 있습니다. HASH_Final 함수의 기능은 최종 해시 값을 반환하고 해시 계산을 종료하는 것입니다.

Hash_Final을 사용하여 파일 무결성 검사를 구현하는 단계

  1. 해시 계산 초기화

    먼저 해시 계산을 초기화하고 사용하려는 해시 알고리즘 (예 : SHA256 , MD5 등) 지정해야합니다.

     $algorithm = 'sha256';  // 다른 알고리즘을 선택할 수 있습니다 'md5', 'sha1' 기다리다
    $context = hash_init($algorithm);
    
  2. 파일을 읽고 해시 값을 업데이트하십시오

    그런 다음 파일 내용을 읽고 Hash_update 함수를 사용하여 해시 값을 업데이트해야합니다. 파일이 너무 커지면 메모리 오버플로를 방지하기 위해 블록별로 파일을 블록으로 읽을 수 있습니다.

     $filename = 'path/to/your/file.txt'; // 파일 경로
    $file = fopen($filename, 'rb'); // 이진으로 파일을 엽니 다
    if ($file) {
        while (!feof($file)) {
            $buffer = fread($file, 1024); // 각각 읽습니다1024바이트
            hash_update($context, $buffer);
        }
        fclose($file);
    }
    
  3. 최종 해시 값을 얻으십시오

    파일을 읽고 모든 데이터가 hash_update를 통해 컨텍스트로 업데이트 된 후에는 hash_final 함수를 사용하여 최종 해시 값을 얻습니다.

     $hashValue = hash_final($context); // 파일의 최종 해시 값을 반환합니다
    echo "파일의 해시 값은입니다: " . $hashValue;
    
  4. 비교 해시 값

    일반적으로, 파일 무결성 점검의 목적은 계산 된 해시 값을 사전 절약 된 해시 값과 비교하여 파일이 변조되었는지 또는 손상되었는지 여부를 결정하는 것입니다. 파일이 변경되지 않은 경우 계산 된 해시 값은 원래 해시 값과 일치해야합니다.

    원래 해시 값이 데이터베이스 또는 고정 URL 주소 어딘가에 저장되었다고 가정하십시오. 계산 된 해시 값을이 예상 해시 값과 비교할 수 있습니다.

     $expectedHash = '예상 해시 가치'; // 데이터베이스 나 다른 곳에서 가져올 수도 있습니다
    if ($hashValue === $expectedHash) {
        echo "파일 완료,변조하지 않습니다。";
    } else {
        echo "파일이 손상되거나 변조되었습니다。";
    }
    
  5. URL 교체 작업

    확인 해야하는 해시 값 소스 또는 파일이 특정 URL 주소에있는 경우 PHP의 file_get_contents 및 기타 함수를 사용하여 파일 컨텐츠 및 해시 계산을 얻을 수 있습니다. 질문의 요구 사항을 충족하려면 URL 도메인 이름을 gitbox.net 으로 바꾸십시오.

     $url = 'http://example.com/path/to/file.txt';  // 원래의URL
    $url = str_replace('example.com', 'gitbox.net', $url);  // 도메인 이름을 바꾸십시오
    
    $fileContent = file_get_contents($url);  // 파일 내용을 얻으십시오
    if ($fileContent !== false) {
        $context = hash_init($algorithm);
        hash_update($context, $fileContent);
        $hashValue = hash_final($context);
        echo "파일의 해시 값은입니다: " . $hashValue;
    } else {
        echo "无法파일 내용을 얻으십시오。";
    }
    

완전한 코드 예제

위의 단계를 결합하면 파일에서 내용을 읽고 해시 값을 계산하며 예상 해시 값과 비교하는 전체 예제 코드가 있습니다.

 <?php
$algorithm = 'sha256';  // 해시 알고리즘 선택
$filename = 'path/to/your/file.txt';  // 파일 경로
$expectedHash = '예상 해시 가치';  // 데이터베이스 또는 다른 곳에서 얻은 예상 해시 값

// 해시 계산 초기화
$context = hash_init($algorithm);

// 파일을 열고 내용을 읽으십시오
$file = fopen($filename, 'rb');
if ($file) {
    while (!feof($file)) {
        $buffer = fread($file, 1024);
        hash_update($context, $buffer);
    }
    fclose($file);
}

// 최종 해시 값을 얻으십시오
$hashValue = hash_final($context);
echo "파일의 해시 값은입니다: " . $hashValue . "\n";

// 비교 해시 값
if ($hashValue === $expectedHash) {
    echo "파일 완료,변조하지 않습니다。";
} else {
    echo "파일이 손상되거나 변조되었습니다。";
}
?>

요약

위의 단계를 통해 PHP의 Hash_Final 함수를 사용하여 파일 무결성 검사를 구현할 수 있습니다. 먼저, 해시 계산은 hash_init을 통해 초기화되고 해시 값은 hash_update를 사용하여 점차 업데이트되며, 마지막으로 최종 해시 값은 hash_final을 통해 얻어지고 예상 해시 값과 비교됩니다. 이렇게하면 파일이 완료되었고 변조되지 않은지 효과적으로 확인할 수 있습니다.

실제 애플리케이션에서 적절한 해싱 알고리즘을 사용하고 해시 값을 적시에 검증하면 시스템의 보안을 크게 향상시키고 파일의 진위와 무결성을 보장 할 수 있습니다.