hash_final
funkcja
Finalizuje inkrementalne obliczanie skrótu i zwraca wynik. Kontekst HashContext jest po wywołaniu nieużywalny — zainicjuj nowy dla kolejnego skrótu.
hash_final(HashContext &$context, bool $binary = false): string
hash_final kończy inkrementalne obliczanie skrótu i zwraca gotowy wynik jako ciąg znaków hex (domyślnie) lub binarny ($binary = true). Po wywołaniu kontekst HashContext zostaje wyczerpany i nie można go ponownie użyć — do kolejnego skrótu wywołaj hash_init().
<?php
declare(strict_types=1);
// Typowe użycie z hash_init() i hash_update():
$ctx = hash_init('sha256');
hash_update($ctx, 'czesc');
hash_update($ctx, ' swiecie');
$hex = hash_final($ctx);
echo $hex;
// wynik: 7e36ebef3c79f1be55e19d97f82ecdfed4efc30f6d666472961e34e7030cb7f2
// Wynik binarny (do dalszego przetwarzania kryptograficznego):
$ctx2 = hash_init('sha256');
hash_update($ctx2, 'dane');
$binarny = hash_final($ctx2, binary: true);
echo strlen($binarny); // 32 (256 bitów = 32 bajty)
// Kontekst po hash_final() jest nieważny:
// hash_update($ctx, 'wiecej'); // ❌ błąd — kontekst wyczerpany
// hash_final($ctx); // ❌ błąd — kontekst wyczerpany
// Jeśli potrzebujesz wielu wariantów skrótu — klonuj przed finalizacją:
$ctx = hash_init('sha256');
hash_update($ctx, 'wiadomosc');
$kopia = clone $ctx;
$skrot1 = hash_final($ctx); // finalizuje oryginał
$skrot2 = hash_final($kopia); // finalizuje kopię — ten sam wynik
var_dump($skrot1 === $skrot2); // bool(true)