현재 위치: > 최신 기사 목록> 컬을 결합하여 스트림을 읽고 해시 값을 동적으로 계산합니다.

컬을 결합하여 스트림을 읽고 해시 값을 동적으로 계산합니다.

M66 2025-05-27

PHP에서 Hash_update_stream 함수는 특히 스트림 데이터를 처리 할 때 해시 값을 동적으로 업데이트하는 방법입니다. CURL 과 결합하여 큰 파일 또는 스트리밍 데이터를 다운로드 할 때 해시 값 계산을 실시간으로 인식 할 수 있습니다. 이 기사에서는 Hash_update_streamCURL을 사용하여이를 달성하는 방법을 살펴 봅니다.

1. hash_update_stream 이란 무엇입니까?

Hash_update_stream 함수는 PHP의 내장 해시 함수 중 하나이며, 해시 계산을 점차적으로 업데이트하는 데 사용됩니다. 즉, 많은 양의 데이터 스트림을 처리 할 때 전체 파일을 메모리에로드하지 않고 파일의 해시 값을 점차 계산할 수 있습니다. 구문은 다음과 같습니다.

 bool hash_update_stream ( resource $context , resource $stream )
  • $ 컨텍스트 : hash_init ()를 사용하여 초기화 된 해시 컨텍스트 리소스.

  • $ stream : 일반적으로 파일 또는 네트워크 스트림을 통해 생성 된 데이터 스트림의 리소스.

2. 컬이란 무엇입니까?

CURL은 URL을 통해 다른 네트워크 리소스와 상호 작용할 수있는 강력한 PHP 확장자입니다. CURL을 통해 서버에 요청을 보내고 HTTP, HTTPS, FTP 등과 같은 여러 프로토콜을 지원하는 응답을 수신 할 수 있습니다. 응용 프로그램 시나리오에서 CURL을 사용하여 원격 자원을 다운로드하고 해시 계산을위한 Hash_update_stream 함수로 데이터 스트림을 넘겨 줄 수 있습니다.

3. 예 : 해시 값을 동적으로 계산하기 위해 hash_update_streamcurl을 사용합니다.

이 예에서는 CURL을 사용하여 파일을 동적으로 다운로드하고 해시 _update_stream 함수와 함께 파일의 해시 값을 실시간으로 계산합니다.

1 단계 : 해시 컨텍스트를 초기화합니다

먼저 해시 컨텍스트를 초기화해야합니다. SHA256 과 같은 일반적으로 사용되는 해싱 알고리즘을 선택할 수 있습니다.

 $hashContext = hash_init('sha256'); // 초기화 sha256 해시 컨텍스트

2 단계 : 세션 초기화

다음으로 Curl을 사용하여 세션을 초기화하고 해당 옵션을 설정하여 원격 파일의 데이터 스트림을 가져옵니다.

 $url = "http://example.com/largefile"; // 다운로드 할 파일 URL
$ch = curl_init($url); // 초기화 curl 세션

// 설정 curl 옵션
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 직접 출력 대신 응답을 반환합니다
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 리디렉션을 지원합니다
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 금지 SSL 인증서 확인(자체 서명 된 인증서에 적합합니다)

// 파일 스트림을 열면 데이터를 얻습니다
$stream = curl_exec($ch);

3 단계 : 스트림을 동적으로 읽고 해시 값을 업데이트하십시오.

이제 Hash_update_stream 함수를 사용하여 CURL 에서 얻은 데이터 스트림을 전달하여 실시간 해시 계산을 수행 할 수 있습니다.

 if ($stream) {
    $fp = fopen('php://memory', 'r+'); // 메모리 스트림을 만듭니다
    fwrite($fp, $stream); // 다운로드 된 콘텐츠를 메모리 스트림에 작성하십시오
    rewind($fp); // 스트림 포인터를 시작 위치로 반환하십시오

    // 사용 hash_update_stream 동적으로 해시 값을 업데이트합니다
    hash_update_stream($hashContext, $fp); 

    fclose($fp); // 스트림을 닫으십시오
}

4 단계 : 해시 계산을 완료하십시오

마지막으로 Hash_Final () 을 통해 최종 해시 값을 얻을 수 있습니다.