현재 위치: > 최신 기사 목록> PHP의 HASH_UPDATE 및 HASH_Final 함수를 사용하여 완전한 해시 계산 프로세스를 완료하는 방법은 무엇입니까?

PHP의 HASH_UPDATE 및 HASH_Final 함수를 사용하여 완전한 해시 계산 프로세스를 완료하는 방법은 무엇입니까?

gitbox 2025-06-15

1. 해시 함수의 개요

PHP에서 해시 함수의 사용은 해시 () 일련의 함수를 통해 구현됩니다. HASH () 함수 자체는 알고리즘과 데이터의 두 가지 주요 매개 변수를 허용 할 수 있습니다. 데이터의 해시를 즉시 계산하고 결과를 반환합니다. 그러나 때로는 더 큰 데이터를 단계별로 처리해야합니다. 특히 데이터가 너무 커서 한 번에 메모리에로드 할 수 없습니다. 이 시점에서 hash_updatehash_final 함수는 유용합니다.

2. 기능 분석

  1. Hash_update
    Hash_update 함수는 데이터 (예 : 파일 또는 문자열)를 배치로 해시 계산으로 공급하는 데 사용됩니다. 기존 해시 계산에 새로운 데이터를 추가합니다. Hash_update를 여러 번 호출하면 큰 데이터 블록을 단계별로 처리 할 수 ​​있습니다.

    문법:

     hash_update ( resource $context , string $data ) : bool
    
    • $ 컨텍스트 : Hash_Init 함수를 통해 생성 할 수있는 해시 컨텍스트 리소스.

    • $ 데이터 : 현재 해시 계산에 추가 해야하는 데이터.

  2. HASH_FINAL
    Hash_final 함수는 해시 계산을 완료하고 모든 데이터가 Hash_update 에 의해 업데이트 된 후 최종 해시 값을 반환하는 데 사용됩니다.

    문법:

     hash_final ( resource $context , bool $raw_output = false ) : string
    
    • $ 컨텍스트 : Hash_update 와 관련된 해시 컨텍스트.

    • $ raw_output : true 인 경우 원래 바이너리 데이터를 반환하십시오. False 인 경우 해시 값을 16 진수 표현으로 반환하십시오.

3. 해시 계산을 완료하기 위해 hash_updatehash_final을 사용하는 방법

다음으로 특정 예제를 사용하여 해시 계산을 완료하기 위해 hash_updatehash_final을 사용하는 방법을 설명합니다.

샘플 코드 :

 <?php
// 생성 SHA256 해시 컨텍스트
$context = hash_init('sha256');

// 배치로 데이터를 업데이트합니다
$data1 = "Hello, this is the first part of the data.";
$data2 = " And this is the second part of the data.";
$data3 = " Finally, here is the third part of the data.";

hash_update($context, $data1);  // 데이터의 첫 번째 부분을 업데이트하십시오
hash_update($context, $data2);  // 데이터의 두 번째 부분을 업데이트하십시오
hash_update($context, $data3);  // 데이터의 세 번째 부분을 업데이트하십시오

// 해시 계산을 완료하고 결과를 얻으십시오
$hash = hash_final($context);

// 최종 해시 값을 출력하십시오
echo "The computed hash is: " . $hash;
?>

코드 구문 분석 :

  1. 해시 컨텍스트 초기화 <br> Hash_init ( 'SHA256')를 사용하여 해시 컨텍스트 리소스를 만듭니다. 여기서 SHA256 알고리즘을 선택했지만 MD5 , SHA1 등과 같은 요구에 따라 다른 해시 알고리즘을 선택할 수 있습니다.

  2. 점차 데이터 <br>를 업데이트합니다 hash_update 함수를 사용하여 데이터를 배치로 해시 계산에 공급하십시오. 이 예에서는 데이터가 세 부분으로 나뉘고 데이터는 3 개의 해시 _update 시간을 통해 해시 컨텍스트에 점차 추가됩니다.

  3. 해시 계산을 완료하고 결과를 출력하십시오 <br> Hash_Final 함수를 사용하여 해시 계산을 완료하고 최종 해시 값을 반환하십시오. 해시 값을 생 바이너리 또는 16 진수로 반환하도록 선택할 수 있습니다. 기본적으로 16 진수 문자열이 반환됩니다.

출력 결과 :

 The computed hash is: 1c7d76e24a56bc69b890f3f8720a2eaf6cf4bb4e3ff315153f0a5e089b131b3c

4. 왜 hash_updatehash_final을 사용합니까?

다량의 데이터를 처리 할 때 해시 () 함수를 직접 사용하여 해시 값을 한 번에 직접 사용하면 특히 큰 파일을 처리 할 때 메모리가 충분하지 않을 수 있습니다. 따라서 Hash_update를 사용하여 배치로 해시 계산을 업데이트하면 메모리를 효과적으로 저장하고 매우 많은 양의 데이터조차도 해시를 원활하게 계산하는 데 사용될 수 있습니다.

또한 Hash_updateHash_Final은 데이터 스트림에서 해시 값을 단계별로 계산하는 유연성을 제공합니다. 이는 실시간 데이터를 처리하거나 블록으로 블록 블록을 읽을 때 특히 중요합니다.

5. 응용 프로그램 시나리오

  • 파일 확인 : 큰 파일을 업로드하거나 다운로드 할 때 파일의 해시 값을 하나씩 계산하여 전송 프로세스 중에 파일이 손상되지 않도록 할 수 있습니다.

  • 비밀번호 스토리지 : 사용자 비밀번호를 저장할 때 해시 알고리즘은 일반적으로 비밀번호를 암호화하는 데 사용되며, 이는 비밀번호 데이터를 점차적으로 업데이트하여 보안을 향상시킬 수 있습니다.

  • 데이터 스트림 암호화 : 빅 데이터 스트림의 실시간 암호화를 위해 Hash_updateHASH_Final 배치 처리를 사용하면 성능 및 메모리 사용 효율성을 향상시킬 수 있습니다.

6. 요약

PHP의 HASH_UPDATEHASH_FILL 기능은 빅 데이터 및 단계별 컴퓨팅 해시 값을 처리하는 강력한 도구입니다. 해시 컨텍스트를 점차적으로 업데이트함으로써 메모리를 효과적으로 관리 할 수 ​​있으며 해시 계산의 무결성과 효율성을 보장 할 수 있습니다. 실제 개발 에서이 두 기능을 합리적으로 사용하면 개발자가 해시 계산 작업을 효율적으로 완료하는 데 도움이 될 수 있습니다.