php에서 hash_final ()은 hash_init () 및 hash_update () 와 함께 사용되는 함수입니다. 이 함수 세트는 특히 큰 데이터 스트림 또는 세그먼트 된 데이터를 처리하기 위해 hash () 함수를 직접 사용하는 것보다보다 유연한 방법을 제공합니다.
이 기사에서는 Hash_Final ()을 사용하여 SHA-256 해시 값을 생성하는 방법을 설명합니다.
Hash_final ()은 해시 컨텍스트를 완료하고 최종 해시 값을 반환하는 데 사용됩니다. Hash_init () (해시 컨텍스트 초기화) 및 hash_update () 와 함께 사용됩니다 (컨텍스트에 데이터 추가).
이 접근법은 큰 파일 처리 또는 스트리밍 데이터와 같이 모든 데이터를 한 번에 메모리에 넣을 수 없을 때 특히 적합합니다.
SHA-256 해시를 생성하는 기본 단계는 다음과 같습니다.
1 ??? 해시 컨텍스트를 초기화하십시오
2 ?? 데이터를 세그먼트로 전달합니다
3 ???? 최종 해시 값을 얻으십시오
다음 코드는 문자열 데이터를 세그먼트에서 처리하는 방법을 보여주고 SHA-256 해시를 생성합니다.
<?php
// 첫 번째 단계:해시 컨텍스트를 초기화합니다,알고리즘을 AS로 지정하십시오 sha256
$context = hash_init('sha256');
// 2 단계:세그먼트에서 데이터를 업데이트하십시오(여러 번 호출 할 수 있습니다 hash_update)
$dataPart1 = 'Hello, ';
$dataPart2 = 'this is a test ';
$dataPart3 = 'using hash_final().';
hash_update($context, $dataPart1);
hash_update($context, $dataPart2);
hash_update($context, $dataPart3);
// 3 단계:최종 해시 값을 얻으십시오(16 진수 문자열)
$hash = hash_final($context);
echo "마지막 SHA-256 해시 값은입니다: $hash";
?>
출력 예 :
마지막 SHA-256 해시 값은입니다: 6e4b18e9f8f2de9d4d70f43b8f6b1c7e6812b826ad3b1c5eaf2df62e245b3f94
큰 파일에서 SHA-256 해시를 생성하려면 다음을 수행 할 수 있습니다.
<?php
$context = hash_init('sha256');
// 파일 스트림을 엽니 다
$handle = fopen('https://gitbox.net/path/to/largefile.zip', 'rb');
if ($handle === false) {
die('파일을 열 수 없습니다。');
}
// 각각 읽습니다 8KB
while (!feof($handle)) {
$data = fread($handle, 8192);
hash_update($context, $data);
}
fclose($handle);
$hash = hash_final($context);
echo "더럽히는 SHA-256 해시 값은입니다: $hash";
?>
이 예에서는 fopen ()을 사용하여 원격 파일 https://gitbox.net/path/path/toto/largefile.zip을 직접 읽고 블록으로 해시 컨텍스트를 업데이트하고 마지막으로 파일의 SHA-256 해시 값을 얻습니다.
? 작은 데이터 (예 : 문자열)에 대한 해시 만 생성하면 실제로 Hash ()를 직접 사용하는 것이 더 쉽습니다.
$hash = hash('sha256', 'Hello, this is a test.');
? hash_final ()가 소비 된 후 해시 컨텍스트가 파괴됩니다. 재사용하려면 다시 Hash_Init ()를 호출해야합니다.