Ce face hash_hkdf
HKDF (RFC 5869) pornește de la o cheie secretă deja puternică (generată aleatoriu, nu o parolă) și produce chei noi pentru scopuri diferite. Parametrul $info diferențiază cheile: aceeași cheie de bază cu "criptare" și cu "semnare" dă două chei independente.
Rezultatul este mereu binar. Pentru parole introduse de oameni nu folosi HKDF, ci password_hash sau hash_pbkdf2.
Parametri
| Parametru | Descriere |
|---|---|
$algo |
Algoritmul, de exemplu "sha256". |
$key |
Cheia de bază, nevidă. |
$length |
Opțional. Lungimea în octeți; 0 înseamnă lungimea algoritmului (32 pentru sha256). |
$info |
Opțional. Eticheta scopului cheii. |
$salt |
Opțional. Sare, recomandată. |
Ce returnează
Cheia derivată, binară.
Exemple
Exemplul 1: Două chei din aceeași cheie principală
<?php
$principala = "cheie-principala-de-32-octeti!!";
$criptare = hash_hkdf("sha256", $principala, 32, "criptare", "sare");
$semnare = hash_hkdf("sha256", $principala, 32, "semnare", "sare");
echo bin2hex($criptare) . "\n";
echo bin2hex($semnare) . "\n";
var_dump($criptare === $semnare);
Rezultat
b074e5d913880f2bbd134d568a650f78c0317feafcb193455248beeeb216bb90
0ce88f70e7a2e1761f8c042aa1f4ce596c0b8cc737086c7b403ff0b241e273a9
bool(false)
Greșeli frecvente
- Afișezi sau salvezi direct rezultatul ca text. Este binar; transformă-l cu
bin2hexsaubase64_encode.
Comenzi înrudite
hash_pbkdf2: Derivă o cheie dintr-o parolă cu algoritmul PBKDF2: multe iterații de HMAC, ca să încetinească ghicirea parolei.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.random_int: Generează un număr întreg aleatoriu, sigur, între două valori.