Ce face hash_init
Uneori datele nu sunt disponibile toate deodată: vin pe bucăți din rețea, dintr-un fișier imens sau dintr-o buclă. hash_init creează un „context” de calcul. Adaugi date cu hash_update (sau hash_update_file, hash_update_stream) și obții amprenta cu hash_final.
Rezultatul este identic cu hash($algo, $toateDatele). Cu HASH_HMAC ca al doilea parametru și o cheie, calculul devine HMAC.
Parametri
| Parametru | Descriere |
|---|---|
$algo |
Algoritmul, de exemplu "sha256". |
$flags |
Opțional. HASH_HMAC pentru HMAC. |
$key |
Opțional. Cheia secretă, obligatorie cu HASH_HMAC. |
$options |
Opțional. Opțiuni pentru unii algoritmi (de exemplu seed la xxHash). |
Ce returnează
Un obiect HashContext.
Exemple
Exemplul 1: Amprentă calculată pe bucăți
<?php
$ctx = hash_init("sha256");
hash_update($ctx, "Salut ");
hash_update($ctx, "din Iași");
echo hash_final($ctx) . "\n";
echo hash("sha256", "Salut din Iași");
Rezultat
1e7c797f095e24649cd0afd5de1869b2bb2bc047915b5cd796649fc8112a51bb
1e7c797f095e24649cd0afd5de1869b2bb2bc047915b5cd796649fc8112a51bb
Exemplul 2: HMAC incremental
<?php
$ctx = hash_init("sha256", HASH_HMAC, "cheie");
hash_update($ctx, "Salut din Iași");
echo hash_final($ctx) . "\n";
echo hash_hmac("sha256", "Salut din Iași", "cheie");
Rezultat
a7f39274e179e35be613d3caccff2c1f06325a12f1fa0889df59f5d1ee163db8
a7f39274e179e35be613d3caccff2c1f06325a12f1fa0889df59f5d1ee163db8
Greșeli frecvente
- Folosești
HASH_HMACfără cheie. PHP aruncăValueError: HMAC are nevoie de o cheie nevidă.
Comenzi înrudite
hash_update: Adaugă o bucată de date la un calcul de amprentă început cu hash_init.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.hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.