O hash de senha é uma técnica de converter uma única senha em outra string chamada senha com hash. A senha com hash geralmente é unilateral, ou seja, não podemos acessar a senha original a partir da senha com hash. Então a questão é por que precisamos usar hashing para fazer tudo isso, por que ir mais um quilômetro se podemos salvar nossas senhas no banco de dados como uma string simples. A única razão para fazer tudo isso é aumentar a segurança, porque os hackers não roubam credenciais de nosso valioso site. É por isso que usamos vários métodos de hash para fazer hash de senhas para proteger nossas senhas enquanto criamos sites e armazenamos nosso banco de dados. No PHP, existem vários algoritmos criptográficos que são comumente usados ​​como md5, crypt, sha1 e bcrypt. E o mais comumente usado hoje em dia é o método de hashing bcrypt. Neste artigo,

O PHP fornece uma função geral de hash de senha para criar um novo hash de senha a partir da senha.

Sintaxe:

string password_hash(string $password, string $algo, array $options = [])

Aqui, a função password_hash leva principalmente três parâmetros que são:

  • $password: a senha que você deseja hash leva um valor de string.
  • $algo: o algoritmo que você deseja usar para fazer o hash da senha. A seguir estão os algoritmos de senha disponíveis em PHP.
    • PASSWORD_BCRYPT: usa o algoritmo CRYPT_BLOWFISH para criar o hash.
    • PASSWORD_ARGON2I: Ele usa o algoritmo Argon2i para hash.
    • PASSWORD_ARGON2ID: Ele usa o algoritmo Argon2id para hash.
    • PASSWORD_DEFAULT: Ele usa o algoritmo bcrypt para hash.
  • $options: leva um valor salt O valor padrão é um valor salt aleatório. Um valor de sal , uma string extra que anexamos a uma string durante o hash.

Valor de retorno: Ele retorna uma string de senha com hash.

Exemplo:

<?php
 
$password = "GeeksforGeeks";
echo "Password is:", $password;
 
echo "Hashed password using CRYPT_BLOWFISH: ",
    password_hash($password, PASSWORD_BCRYPT);
echo "\n";
 
echo "Hashed password using Argon2i: ",
    password_hash($password, PASSWORD_ARGON2I);
echo "\n";
 
echo "Hashed password using bcrypt: ",
    password_hash($password, PASSWORD_DEFAULT);
?>

Saída:

A senha é: GeeksforGeeks

Senha com hash usando CRYPT_BLOWFISH: $2y $10 $V4Cvy4caGAQBLWbw8i / PHOK9lopTYoxyQze3aZ3ocw9dDvju7Wxoi

Senha com hash usando Argon2i: $argon2i $v = 19 $m = 65536, t = 4, p = 1 $Y2F2TVouVWplYVYucy9DSw $p164c28N85L5v1i8GISN1oao10ZzNm9e / JAyicRaX / w

Senha com hash usando bcrypt: $2y $10 $MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi

Nota: Não usamos PASSWORD_ARGON2ID porque ele não está disponível na instalação padrão do PHP.

Para verificar a senha com hash: O PHP fornece uma função embutida chamada password_verify para combinar a senha com hash com as senhas originais.

Sintaxe:

bool password_verify(string $password, string $hash)

Parâmetros:

  • $password: a senha que criptografamos usando um algoritmo de hash.
  • $hash: a senha com hash que vamos verificar com a senha original.

Exemplo:

<?php
 
$password = "GeeksforGeeks";
 
$hashed_password =
'$2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi';
 
echo "Original Password is: ", $password;
echo "\n";
 
echo "Hashed Password is: ", $hashed_password;
echo "\n";
 
if (password_verify($password, $hashed_password)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
 
?>
Saída
A senha original é: GeeksforGeeks
A senha com hash é: $2y $10 $MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi
A senha é válida!