hash_update

funkcja

Dostarcza kolejny fragment danych do kontekstu skrótu zainicjowanego przez hash_init(). Zwraca true — kontekst aktualizuje się w miejscu.

hash_update(HashContext &$context, string $data): true

hash_update dodaje dane do otwartego kontekstu HashContext zwróconego przez hash_init(). Można ją wywoływać dowolną liczbę razy, a końcowy skrót uwzględni wszystkie fragmenty w kolejności ich podawania. Po dostarczeniu wszystkich danych wywołaj hash_final().

<?php
declare(strict_types=1);

// Budowanie skrótu z wielu fragmentów:
$ctx = hash_init('sha256');
hash_update($ctx, 'czesc');
hash_update($ctx, ' swiecie');
$wynik = hash_final($ctx);
echo $wynik;
// wynik: 7e36ebef3c79f1be55e19d97f82ecdfed4efc30f6d666472961e34e7030cb7f2

// Identyczny wynik jak hash('sha256', 'czesc swiecie'):
var_dump($wynik === hash('sha256', 'czesc swiecie')); // bool(true)

// Haszowanie odpowiedzi HTTP w locie (np. w middleware):
$ctx = hash_init('sha256');
foreach ($chunksOdpowiedzi as $chunk) {
    hash_update($ctx, $chunk);
    // wysyłaj chunk do klienta równolegle...
}
$checksumOdpowiedzi = hash_final($ctx);

// Kontekst można kopiować przed finalizacją:
$ctx1 = hash_init('sha256');
hash_update($ctx1, 'wspolna-czesc');
$ctx2 = clone $ctx1;              // dwa niezależne konteksty od tego momentu
hash_update($ctx1, '-wariant-a');
hash_update($ctx2, '-wariant-b');
echo hash_final($ctx1); // skrót dla 'wspolna-czesc-wariant-a'
echo hash_final($ctx2); // skrót dla 'wspolna-czesc-wariant-b'