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