현재 위치: > 최신 기사 목록> zip : // 또는 php : // 필터와 함께 hash_update_stream ()을 사용하십시오

zip : // 또는 php : // 필터와 함께 hash_update_stream ()을 사용하십시오

M66 2025-05-27

PHP에서 Hash_update_stream () 함수를 사용하면 생성 된 해시 컨텍스트를 업데이트 할 수 있습니다. 정적 데이터와 달리 스트리밍 데이터는 매우 커지거나 한 번에 메모리에로드 할 수 없으므로 스트리밍을 사용하는 것이 매우 중요합니다. 이 기사에서는 스트리밍 데이터를 처리하기 위해 zip : // 또는 php : // 필터 와 함께 hash_update_stream () 함수를 사용하는 방법을 소개합니다.

1. hash_update_stream () 함수는 무엇입니까?

Hash_update_stream ()은 파일 또는 네트워크 데이터 스트림과 같은 스트리밍 데이터를 처리하여 해시 컨텍스트를 업데이트하는 PHP의 해시 함수입니다. 사용량은 다음과 같습니다.

 hash_update_stream ( resource $context , resource $handle [, int $length = 1024 ] ) : bool
  • $ 컨텍스트 : 이것은 hash_init () 에 의해 생성 된 해시 컨텍스트입니다.

  • $ 핸들 : 파일 핸들 또는 기타 스트림 유형과 같이 스트림에서 읽어야하는 데이터 스트림 리소스입니다.

  • $ 길이 : 이것은 시간당 읽는 바이트 수입니다. 기본값은 1024 바이트입니다.

2. hash_update_stream ()을 사용하여 zip : // stream을 처리하십시오

PHP에서 Zip : //는 ZIP 파일에서 데이터 스트림을 직접 읽는 특수 프로토콜입니다. 압축 파일을 해시 해야하는 경우 zip : // 프로토콜을 통해 파일 컨텐츠에 액세스하고 Hash_update_stream ()을 사용하여 스트리밍 데이터를 처리 할 수 ​​있습니다.

zip 파일 example.zip이 있고 file.txt 라는 텍스트 파일이 포함되어 있다고 가정합니다. 다음 코드를 사용할 수 있습니다.

 <?php
// 해시 컨텍스트를 만듭니다
$hashContext = hash_init('sha256');

// 사용 zip:// 프로토콜 읽기 ZIP 파일에서 데이터가 흐릅니다
$zipStream = fopen('zip://example.zip#file.txt', 'r');

if ($zipStream) {
    // 해시 값을 업데이트하십시오
    while (!feof($zipStream)) {
        hash_update_stream($hashContext, $zipStream);
    }
    fclose($zipStream);

    // 최종 해시 값을 얻으십시오
    $hashValue = hash_final($hashContext);
    echo "SHA-256 Hash of the file: " . $hashValue;
} else {
    echo "파일을 열 수 없습니다!";
}
?>

3. php : // 필터를 사용하여 스트리밍 데이터를 처리하십시오

PHP : // 필터는 입력 스트림을 필터링 할 수있는 매우 강력한 스트림 캡슐화입니다. 예를 들어, php : // 필터를 통해 데이터를 압축, 압축 압축 또는 변환 할 수 있습니다. hash_update_stream () 과 결합하여 어떤 종류의 필터로 처리 된 스트리밍 데이터를 해시 할 수 있습니다.

php : // 필터를 통해 텍스트 파일의 해시 값을 읽고 계산하려고한다고 가정하지만 동시에 데이터에서 문자 변환을 수행하십시오. 다음은 php : // 필터를 사용하여 convert.iconv.utf-8/iso-8859-1을 통해 변환 된 스트림을 읽고 해시를 계산하는 방법을 보여주는 예입니다.

 <?php
// 해시 컨텍스트를 만듭니다
$hashContext = hash_init('md5');

// 사용 php://filter 문자 인코딩을 읽고 변환합니다
$filteredStream = fopen('php://filter/read=convert.iconv.UTF-8/ISO-8859-1/resource=example.txt', 'r');

if ($filteredStream) {
    // 해시 값을 업데이트하십시오
    while (!feof($filteredStream)) {
        hash_update_stream($hashContext, $filteredStream);
    }
    fclose($filteredStream);

    // 최종 해시 값을 얻으십시오
    $hashValue = hash_final($hashContext);
    echo "MD5 Hash of the file after conversion: " . $hashValue;
} else {
    echo "파일을 열 수 없습니다!";
}
?>

4. 요약

hash_update_stream () 함수를 zip : // 또는 php : // 필터 프로토콜과 결합하면 압축 파일 또는 처리 된 스트리밍 데이터를 유연하게 해시 할 수 있습니다. Hash_update_stream () 의 스트리밍 처리 기능은 데이터 볼륨이 매우 크면 너무 많은 메모리를 소비하지 않고 해시 값을 효율적으로 계산할 수 있습니다. zip 파일에서 데이터를 읽거나 스트림에서 문자 인코딩 변환 적용에 관계없이 Hash_update_stream ()은 이러한 시나리오를 처리하는 간단하고 효율적인 방법을 제공합니다.