PHP - Funzione Hash pbkdf2 ()
Definizione e utilizzo
Il hash_pbkdf2() la funzione restituisce la derivazione della chiave PBKDF2 per la password specificata.
PBKDF2 sta per Password-Based Key Derivation Function 2. La funzione di derivazione della chiave PBKDF2 utilizza la funzione pseudocasuale, come il codice di autenticazione del messaggio basato su hash (HMAC) che viene applicato alla password o al messaggio fornito insieme al sale e al processo viene ripetuto più volte per ottenere la chiave. Viene utilizzato principalmente per l'hash della password e la funzione di derivazione della chiave PBKDF2 è progettata in modo tale che diventa difficile per l'aggressore indovinare la password originale con l'hash.
Sintassi
hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [
, int $length = 0 [, bool $raw_output = FALSE ]
] ) : string
Parametri
Suor n | Parametro e descrizione |
---|---|
1 | algo Nome dell'algoritmo di hashing. C'è una grande lista di algoritmi disponibili con hash, alcuni importanti sono md5, sha256, ecc. Per ottenere l'elenco completo degli algoritmi supportati, controlla hash_algos () |
2 | password Password per la quale è necessario generare la derivazione della chiave PBKDF2. |
3 | salt Il sale che si desidera utilizzare per derivare la derivazione della chiave PBKDF2. |
4 | iterations Le interazioni interne da eseguire per arrivare alla derivazione finale. |
5 | length La lunghezza finale di derivazione della chiave PBKDF2. Se raw_output è TRUE, la chiave derivata corrisponde alla lunghezza in byte, se raw_output è FALSE, sarà il doppio della lunghezza in byte della chiave derivata |
6 | raw_output Se raw_output è falso, l'output sarà una stringa con esiti minuscoli, se TRUE l'output sarà dati binari grezzi. |
Valori restituiti
Il hash_pbkdf2() restituisce una stringa che ha la chiave derivata come esadecimale minuscolo, se raw_output è falso e se raw_output è impostato su TRUE la stringa sarà una rappresentazione binaria grezza della chiave derivata.
Versione PHP
Questa funzione funzionerà dalla versione PHP maggiore di 5.5.0.
Esempio 1
Utilizzando hash_pbkdf2 () -
<?php
$password = "mypassword";
$iterations = 500;
$salt = 'testingkey';
$pbkdf2_hash = hash_pbkdf2("md5", $password, $salt, $iterations, 25);
echo $pbkdf2_hash;
?>
Produzione
Questo produrrà il seguente risultato:
cb0130970bb39f6a95d193934
Esempio 2
Utilizzo di hash_pbkdf2 () con 1000 iterazioni -
<?php
$password = "mypassword";
$iterations = 1000;
$salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
$pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10);
echo $pbkdf2_hash;
?>
Produzione
Questo produrrà il seguente risultato:
0c31d20aa2
Esempio 3
Utilizzando hash_pbkdf2 () con raw_output come true -
<?php
$password = "mypassword";
$iterations = 1000;
$salt = openssl_random_pseudo_bytes(10); //generates pseudo-random string of bytes
$pbkdf2_hash = hash_pbkdf2("sha256", $password, $salt, $iterations, 10, true);
echo $pbkdf2_hash;
?>
Esempio 4
Utilizzando hash_pbkdf2 () con raw_output come true -
Nell'esempio si farà uso della funzione PHP base64_encode () che convertirà l'output binario grezzo da hash_pbkdf2 () in una stringa replicabile.
<?php
echo base64_encode(
hash_pbkdf2("sha256", 'passwordtest', openssl_random_pseudo_bytes(10), 5000, 10, true)
);
?>
Produzione
Questo produrrà il seguente risultato:
2FogGKtZxmt4iQ==