Ce face hash_update
hash_update poate fi apelată de oricâte ori, cu bucăți de orice mărime. Ordinea contează: amprenta finală este cea a tuturor bucăților lipite în ordinea adăugării.
După hash_final contextul este închis. Un nou hash_update pe el aruncă TypeError.
Parametri
| Parametru | Descriere |
|---|---|
$context |
Contextul creat cu hash_init. |
$data |
Bucata de date adăugată. |
Ce returnează
Întotdeauna true.
Exemple
Exemplul 1: Amprenta unui jurnal construit linie cu linie
<?php
$linii = ["Ana s-a autentificat", "Ana a plasat comanda 1024", "Ana s-a deconectat"];
$ctx = hash_init("sha256");
foreach ($linii as $linie) {
hash_update($ctx, $linie . "\n");
}
$amprenta = hash_final($ctx);
var_dump($amprenta === hash("sha256", implode("\n", $linii) . "\n"));
Rezultat
bool(true)
Exemplul 2: Context deja închis
<?php
$ctx = hash_init("md5");
hash_final($ctx);
try {
hash_update($ctx, "mai mult");
} catch (TypeError $e) {
echo $e->getMessage();
}
Rezultat
hash_update(): Argument #1 ($context) must be a valid, non-finalized HashContext
Greșeli frecvente
- Vrei o amprentă intermediară și apelezi
hash_finalîn mijlocul calculului. Contextul se închide. Fă întâi o copie cuhash_copy.
Comenzi înrudite
hash_init: Pornește un calcul de amprentă incremental: datele se adaugă pe bucăți, iar rezultatul se obține la final.hash_final: Încheie un calcul de amprentă incremental și returnează rezultatul.hash_copy: Copiază un calcul de amprentă incremental, ca să poți obține un rezultat intermediar și apoi să continui.