Usando bcrypt e Argon2 para proteger senhas no PHP

Tanto o algoritmo bcrypt quanto o Argon2 estão disponíveis como funções nativas do PHP a partir da versão 5.5.0 e 7.2.0, respectivamente.

  1. Bcrypt:
    O PHP fornece a função password_hash() para gerar um hash seguro usando o algoritmo bcrypt. Aqui está um exemplo de como usá-lo para gerar um hash bcrypt de uma senha:
   $senha = 'minha_senha';
   $hash = password_hash($senha, PASSWORD_DEFAULT);

O segundo argumento PASSWORD_DEFAULT indica que você deseja usar o algoritmo bcrypt com suas configurações padrão. O resultado, $hash, será um hash seguro do bcrypt que você pode armazenar no banco de dados.

Para verificar se uma senha corresponde a um hash bcrypt, você pode usar a função password_verify(). Aqui está um exemplo:

   $senha = 'minha_senha';
   $hash = '$2y$10$KmWzW1mMeLTCXq8TLX2tc.1.KRXM/AIY4wrgRgWfSyzkkXat/8ikK';

   if (password_verify($senha, $hash)) {
       echo 'Senha correta!';
   } else {
       echo 'Senha incorreta!';
   }
  1. Argon2:
    O PHP oferece suporte ao Argon2 por meio da extensão Sodium, que foi incluída no PHP a partir da versão 7.2.0. Para utilizar o Argon2, você precisa ter a extensão Sodium instalada e ativada no seu servidor. Aqui está um exemplo simples de como usar o Argon2 para gerar um hash de senha:
   $senha = 'minha_senha';
   $hash = sodium_crypto_pwhash_str($senha, SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE);

A função sodium_crypto_pwhash_str() é usada para gerar um hash Argon2. Ela recebe a senha como o primeiro argumento e, em seguida, os parâmetros SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE e SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE definem a complexidade do algoritmo (operações e uso de memória).

Para verificar se uma senha corresponde a um hash Argon2, você pode usar a função sodium_crypto_pwhash_str_verify(). Aqui está um exemplo:

   $senha = 'minha_senha';
   $hash = '$argon2id$v=19$m=65536,t=4,p=1$LSsryM5b84l9xhMiPiZw9A$hzFVTF...';

   if (sodium_crypto_pwhash_str_verify($hash, $senha)) {
       echo 'Senha correta!';
   } else {
       echo 'Senha incorreta!';
   }

Certifique-se de ter a extensão Sodium instalada e ativada no seu ambiente PHP para usar o Argon2.

Lembre-se de que, ao armazenar senhas, é essencial seguir boas práticas de segurança, como o uso de algoritmos de hash seguros e o armazenamento adequado dos hashes no banco de dados.

Sim, tanto o algoritmo bcrypt quanto o Argon2 estão disponíveis como funções nativas do PHP a partir da versão 5.5.0 e 7.2.0, respectivamente.

  1. Bcrypt:
    O PHP fornece a função password_hash() para gerar um hash seguro usando o algoritmo bcrypt. Aqui está um exemplo de como usá-lo para gerar um hash bcrypt de uma senha:
   $senha = 'minha_senha';
   $hash = password_hash($senha, PASSWORD_DEFAULT);

O segundo argumento PASSWORD_DEFAULT indica que você deseja usar o algoritmo bcrypt com suas configurações padrão. O resultado, $hash, será um hash seguro do bcrypt que você pode armazenar no banco de dados.

Para verificar se uma senha corresponde a um hash bcrypt, você pode usar a função password_verify(). Aqui está um exemplo:

   $senha = 'minha_senha';
   $hash = '$2y$10$KmWzW1mMeLTCXq8TLX2tc.1.KRXM/AIY4wrgRgWfSyzkkXat/8ikK';

   if (password_verify($senha, $hash)) {
       echo 'Senha correta!';
   } else {
       echo 'Senha incorreta!';
   }
  1. Argon2:
    O PHP oferece suporte ao Argon2 por meio da extensão Sodium, que foi incluída no PHP a partir da versão 7.2.0. Para utilizar o Argon2, você precisa ter a extensão Sodium instalada e ativada no seu servidor. Aqui está um exemplo simples de como usar o Argon2 para gerar um hash de senha:
   $senha = 'minha_senha';
   $hash = sodium_crypto_pwhash_str($senha, SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE, SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE);

A função sodium_crypto_pwhash_str() é usada para gerar um hash Argon2. Ela recebe a senha como o primeiro argumento e, em seguida, os parâmetros SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE e SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE definem a complexidade do algoritmo (operações e uso de memória).

Para verificar se uma senha corresponde a um hash Argon2, você pode usar a função sodium_crypto_pwhash_str_verify(). Aqui está um exemplo:

   $senha = 'minha_senha';
   $hash = '$argon2id$v=19$m=65536,t=4,p=1$LSsryM5b84l9xhMiPiZw9A$hzFVTF...';

   if (sodium_crypto_pwhash_str_verify($hash, $senha)) {
       echo 'Senha correta!';
   } else {
       echo 'Senha incorreta!';
   }

Certifique-se de ter a extensão Sodium instalada e ativada no seu ambiente PHP para usar o Argon2.

Lembre-se de que, ao armazenar senhas, é essencial seguir boas práticas de segurança, como o uso de algoritmos de hash seguros e o armazenamento adequado dos hashes no banco de dados.

Rolar para cima