PHP - Função Hash pbkdf2 ()

Definição e Uso

o hash_​pbkdf2() função retorna a derivação da chave PBKDF2 para a senha fornecida.

O PBKDF2 significa Função de Derivação de Chave Baseada em Senha 2. A função de derivação de chave PBKDF2 faz uso da função pseudo-aleatória, como código de autenticação de mensagem baseado em hash (HMAC) que é aplicado à senha ou mensagem fornecida junto com o salt e o processo é iterado várias vezes para obter a chave. É usado principalmente para fazer o hash da senha e a função de derivação da chave PBKDF2 é projetada de tal forma que torna difícil para o invasor adivinhar a senha original com hash.

Sintaxe

hash_pbkdf2 ( string $algo , string $password , string $salt , int $iterations [
   , int $length = 0 [, bool $raw_output = FALSE ]
] ) : string

Parâmetros

Sr. Não Parâmetro e Descrição
1

algo

Nome do algoritmo de hash. Há uma grande lista de algoritmos disponíveis com hash, alguns importantes são md5, sha256, etc.

Para obter a lista completa de algoritmos suportados, verifique se há hash_algos ()

2

password

Senha para a qual você precisa gerar a derivação de chave PBKDF2.

3

salt

O sal que você deseja usar para derivar a derivação da chave PBKDF2.

4

iterations

As interações internas a serem realizadas para chegar à derivação final.

5

length

O comprimento final de derivação da chave PBKDF2. Se raw_output for TRUE, a chave derivada corresponde ao comprimento do byte, se raw_output for FALSE, será duas vezes o comprimento do byte da chave derivada

6

raw_output

Se raw_output for false, a saída será uma string com hexits em minúsculas; se TRUE, a saída será de dados binários brutos.

Valores Retornados

o hash_​pbkdf2() retorna uma string que tem a chave derivada como hexits em minúsculas, se raw_output for false e se raw_output for definido como TRUE, a string será uma representação binária bruta da chave derivada.

Versão PHP

Esta função funcionará a partir da versão do PHP superior a 5.5.0.

Exemplo 1

Usando hash_pbkdf2 () -

<?php
   $password = "mypassword";
   $iterations = 500;
   $salt = 'testingkey';
   $pbkdf2_hash = hash_pbkdf2("md5", $password, $salt, $iterations, 25);
   echo $pbkdf2_hash;	
?>

Resultado

Isso produzirá o seguinte resultado -

cb0130970bb39f6a95d193934

Exemplo 2

Usando hash_pbkdf2 () com 1000 iterações -

<?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;
?>

Resultado

Isso produzirá o seguinte resultado -

0c31d20aa2

Exemplo 3

Usando hash_pbkdf2 () com raw_output como 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;
?>

Exemplo 4

Usando hash_pbkdf2 () com raw_output como true -

No exemplo, fará uso da função PHP base64_encode () que converterá a saída binária bruta de hash_pbkdf2 () em uma string reabível.

<?php
   echo base64_encode(
      hash_pbkdf2("sha256", 'passwordtest', openssl_random_pseudo_bytes(10), 5000, 10, true)
   );
?>

Resultado

Isso produzirá o seguinte resultado -

2FogGKtZxmt4iQ==