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)