Ce face hash_hmac_file
hash_hmac_file dă același rezultat ca hash_hmac($algo, file_get_contents($fisier), $cheie), dar citește fișierul pe bucăți. Este potrivită pentru fișiere mari: backup-uri, exporturi, arhive trimise între servere.
Cine primește fișierul și știe cheia recalculează semnătura și o compară cu hash_equals. Dacă fișierul a fost modificat, semnăturile diferă.
Parametri
| Parametru | Descriere |
|---|---|
$algo |
Algoritmul, de obicei "sha256". |
$filename |
Calea către fișier. |
$key |
Cheia secretă. |
$binary |
Opțional. true pentru rezultat binar. |
Ce returnează
Semnătura, ca text hexazecimal, sau false dacă fișierul nu poate fi citit.
Exemple
Exemplul 1: Semnătura unui fișier și verificarea ei
<?php
$cheie = "cheie-secreta";
file_put_contents("export.csv", "nume,oras\nAna,Iași\n");
$semnatura = hash_hmac_file("sha256", "export.csv", $cheie);
echo $semnatura . "\n";
var_dump(hash_equals($semnatura, hash_hmac("sha256", file_get_contents("export.csv"), $cheie)));
file_put_contents("export.csv", "Mihai,Cluj\n", FILE_APPEND);
var_dump(hash_equals($semnatura, hash_hmac_file("sha256", "export.csv", $cheie)));
Rezultat
5e40dcd5c6df8abbf1e7421c95d5528bd1cdb8aad5879cc1599d04d3487d9d52
bool(true)
bool(false)
Greșeli frecvente
- Trimiți semnătura și cheia împreună cu fișierul. Cine are cheia poate semna orice; cheia trebuie să rămână secretă.
Comenzi înrudite
hash_hmac / hash_equals: Calculează o semnătură HMAC: o amprentă care depinde și de o cheie secretă. Dovedește că datele nu au fost modificate.hash: Calculează amprenta unui text cu algoritmul ales: sha256, sha512, sha3-256, xxh3 și multe altele.