Función PHP Password_hash

Función PHP Password_hash
La contraseña del usuario de cualquier aplicación es muy importante para mantener la aplicación a salvo de diferentes ataques. Existen muchas maneras en PHP para generar una contraseña segura para hacer que la aplicación sea más segura. La función contraseña_hash () es una forma de crear un nuevo hash de contraseña utilizando el algoritmo de hash de ida. La sintaxis de esta función se da a continuación.

Sintaxis:

cadena | false contraseña_hash (cadena $ contraseña, cadena | int | null $ algo [, array $ options = []])

El primer argumento es obligatorio, y se usa para tomar el valor de la cadena que se ha asaltado.

El segundo argumento es obligatorio, y se utiliza para tomar el entero o cadena que se refiere a un algoritmo, que se utilizará para crear el hash de contraseña. Esta función actualmente admite los siguientes algoritmos.

Contraseña_default:

Utiliza el algoritmo BCrypt para generar el hash de contraseña.

Contraseña_bcrypt:

Utiliza el algoritmo crypto_blowfish para generar el hash de contraseña.

Contraseña_argon2i:

Utiliza el algoritmo de hashing Argon2i para generar el hash de contraseña, y se puede usar si PHP se ha compilado con Soporte de Argon2.

Contraseña_argon2id:

Utiliza el algoritmo de hashing Argon2id para generar el hash de contraseña, y se puede usar si PHP se ha compilado con Soporte de Argon2.

El tercer argumento es opcional, y se utiliza para definir una matriz que contiene las opciones compatibles del algoritmo usado.

Las siguientes opciones son compatibles con el algoritmo contraseña_bcrypt.

sal:

Esta opción está en desuso ahora. El valor de sal que se genera por defecto es mejor usar.

costo:

Se usa para definir el costo del algoritmo que debe usarse. El valor predeterminado es 10.

Las siguientes opciones son compatibles con los algoritmos contraseña_argon2i y contraseña_argon2id.

memoria_cost:

Se usa para definir la memoria máxima en KB que se puede usar para generar el hash de contraseña utilizando el hash Argon2.

Time_cost:

Se usa para definir la cantidad máxima de tiempo que se puede utilizar para generar el hash de contraseña utilizando el hash Argon2.

hilos:

Se utiliza para definir el número de hilos para generar el hash de contraseña usando el hash Argon2.

La función devuelve la contraseña de hash en el éxito o falso en la falla.

Password_hash () Ejemplos de funciones

Los usos de la función contraseña_hash () para crear contraseñas hash han estado en la siguiente parte del tutorial.

Ejemplo-1: cree una contraseña hash utilizando el algoritmo hash predeterminado

Cree un archivo PHP con el siguiente script que generará un valor hash de una contraseña utilizando la función contraseña_hash (), y el algoritmo de hashing predeterminado se ha utilizado aquí. Las cadenas de contraseña originales y de hash se imprimirán como salida del script.

// Establecer el valor de la contraseña
$ contraseña = 'SecretPassword';
// Generar la contraseña de hash en función del algoritmo predeterminado
$ hashed_password = contraseña_hash ($ contraseña, contraseña_default);
// imprime la contraseña original y hashed
echo "la contraseña original: $ contraseña";
eco "
La contraseña hash utilizando el algoritmo predeterminado: $ hashed_password";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior.

Ejemplo-2: Crear contraseña hash utilizando el valor de costo y el algoritmo de contraseña_bcrypt

Cree un archivo PHP con el siguiente script que generará un valor hash de una contraseña utilizando la función contraseña_hash (). El algoritmo contraseña_bcrypt y el valor de costo se han utilizado en la función contraseña_hash () para generar la contraseña hashed. La cadena de contraseña original y hash se imprimirá como la salida del script.

// Establecer el valor de la contraseña
$ contraseña = 'SecretPassword';
// Establecer el valor de costo para el algoritmo de contraseña_bcrypt
$ opción = ["costo" => 5];
// Generar la contraseña de hash en función del algoritmo predeterminado
$ hashed_password = contraseña_hash ($ contraseña, contraseña_bcrypt, $ opción);
// imprime la contraseña original y hashed
echo "la contraseña original: $ contraseña";
eco "
La contraseña de hash usando contraseña_bcrypt: $ hashed_password";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior.

Ejemplo-3: cree una contraseña hash utilizando el algoritmo contraseña_argon2i

Cree un archivo PHP con el siguiente script que generará un valor hash de una contraseña utilizando la función contraseña_hash (). El algoritmo contraseña_argon2i se ha utilizado en la función contraseña_hash () para generar la contraseña hashed. Las cadenas de contraseña originales y de hash se imprimirán como salida del script.

// Establecer el valor de la contraseña
$ contraseña = 'SecretPassword';
// Generar la contraseña de hash en función del algoritmo predeterminado
$ hashed_password = contraseña_hash ($ contraseña, contraseña_argon2i);
// imprime la contraseña original y hashed
echo "la contraseña original: $ contraseña";
eco "
La contraseña de hash usando contraseña_argon2i: $ hashed_password";
?>

Producción:

La siguiente salida aparecerá después de ejecutar el script anterior.

Ejemplo-4: usando la función contraseña_hash () con la función contraseña_verify ()

Cree un archivo PHP con el siguiente script para verificar la contraseña de hash utilizando la función contraseña_verify () después de generar la contraseña hash desde un datos de cadena usando la función contraseña_hash (). La contraseña se tomará del parámetro URL y verificará si la contraseña es válida utilizando el valor de la contraseña y los valores de contraseña de hash en los argumentos de la función contraseña_verify (). Si esta función devolverá verdadero, entonces la contraseña es válida; De lo contrario, la contraseña no es válida.

// Establecer el valor de la contraseña
$ contraseña = 'SecretPassword';
// Generar la contraseña de hash en función del algoritmo predeterminado
$ hashed_password = contraseña_hash ($ contraseña, contraseña_default);
if (isset ($ _ get ['contraseña']))

// Asigna la contraseña dada desde la URL
$ v_password = $ _get ['contraseña'];
// Verifique la validez de la contraseña utilizando la función contraseña_verify ()
if (contraseña_verify ($ v_password, $ hashed_password))
La contraseña de echo es válida.';
demás
La contraseña de eco no es válida.';

demás
Echo "no se da contraseña.";
?>

Producción:

Después de ejecutar el script anterior sin el parámetro URL, aparecerá la siguiente salida.

http: // localhost/php/pass4.php

La siguiente salida aparecerá después de ejecutar el script anterior con el valor del parámetro URL ',', 'contraseña secreta', y la contraseña de hash se generó para este valor en el script. Entonces, la contraseña es válida.

http: // localhost/php/pass4.php?contraseña = SecretPassword

La siguiente salida aparecerá después de ejecutar el script anterior con el valor del parámetro URL ',', 'secreto' inválido.

http: // localhost/php/pass4.php?contraseña = secreto

Conclusión

Se han mostrado diferentes formas de crear una contraseña hash utilizando la función contraseña_hash () en los ejemplos de este tutorial para ayudar a los usuarios de PHP a aplicar esta función correctamente en su script.