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==