¿Cuál es el método más utilizado para cifrar contraseñas en PHP?

La contraseña hash es una técnica de convertir una sola contraseña en otra string llamada contraseña hash. La contraseña hash es generalmente unidireccional, es decir, no podemos ir a la contraseña original desde la contraseña hash. Entonces, la cuestión es por qué necesitábamos usar hashing para hacer todo esto, ¿por qué hacer un esfuerzo adicional si podemos guardar nuestras contraseñas en la base de datos como una simple string? La única razón para hacer todo esto es mejorar la seguridad porque los piratas informáticos no roban las credenciales de nuestro valioso sitio. Es por eso que usamos varios métodos hash para codificar contraseñas para proteger nuestras contraseñas mientras creamos sitios web y almacenamos nuestra base de datos. En PHP, hay varios algoritmos criptográficos que se usan comúnmente como md5, crypt, sha1 y bcrypt. Y el más utilizado hoy en día es el método hash bcrypt. En este articulo,

PHP proporciona una función de hash de contraseña general para crear un nuevo hash de contraseña a partir de la contraseña.

Sintaxis:

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

Aquí, la función password_hash toma principalmente tres parámetros que son:

  • $password: la contraseña que desea codificar toma un valor de string.
  • $algo: el algoritmo que desea utilizar para codificar la contraseña. Los siguientes son los algoritmos de contraseña disponibles en PHP.
    • PASSWORD_BCRYPT: Utiliza el algoritmo CRYPT_BLOWFISH para crear el hash.
    • PASSWORD_ARGON2I: Utiliza el algoritmo Argon2i para el hashing.
    • PASSWORD_ARGON2ID: Utiliza el algoritmo Argon2id para hashing.
    • PASSWORD_DEFAULT: Utiliza el algoritmo bcrypt para hash.
  • $opciones: Toma un valor de sal El valor predeterminado es un valor de sal aleatorio. Un valor de sal , una string adicional que agregamos a una string mientras hacemos hash.

Valor devuelto: Devuelve una string de contraseña con hash.

Ejemplo:

PHP

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

Producción:

La contraseña es: GeeksforGeeks

Contraseña cifrada usando CRYPT_BLOWFISH: $2y$10$V4Cvy4caGAQBLWbw8i/PHOK9lopTYoxyQze3aZ3ocw9dDvju7Wxoi

Contraseña cifrada usando Argon2i: $argon2i$v=19$m=65536,t=4,p=1$Y2F2TVouVWplYVYucy9DSw$p164c28N85L5v1i8GISN1oao10ZzNm9e/JAyicRaX/w

Contraseña cifrada usando bcrypt: $2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi

Nota: No hemos utilizado PASSWORD_ARGON2ID porque no está disponible en la instalación estándar de PHP.

Para verificar la contraseña con hash: PHP proporciona una función incorporada llamada password_verify para hacer coincidir la contraseña con hash con las contraseñas originales.

Sintaxis:

bool password_verify(string $password, string $hash)

Parámetros:

  • $password: La contraseña que hemos hash usando un algoritmo hash.
  • $hash: La contraseña hash que vamos a verificar con la contraseña original.

Ejemplo:

PHP

<?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.';
}
 
?>
Producción

Original Password is: GeeksforGeeks
Hashed Password is: $2y$10$MQU3vDgoN10.JxyJ1m9UQOEqFy.Jg3D8tmHdZUAAkcpGFRwkbbLfi
Password is valid!

Publicación traducida automáticamente

Artículo escrito por richasalan57 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *