"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué varían los valores hash cuando se utiliza la función Password_Hash?

¿Por qué varían los valores hash cuando se utiliza la función Password_Hash?

Publicado el 2024-11-07
Navegar:315

Why Do Hash Values Vary When Using the Password_Hash Function?

Comprensión de los diferentes valores hash en la función Password_Hash

Al desarrollar sistemas de autenticación seguros, los desarrolladores a menudo se encuentran con la confusión de obtener diferentes hashes de contraseña utilizando el método password_hash función. Para aclarar este comportamiento y garantizar una verificación correcta de la contraseña, analicemos la mecánica detrás de esta función.

Saltar contraseñas: una característica deliberada

La función password_hash genera intencionalmente una sal única para cada contraseña que aplica hash. La salazón es una medida de seguridad crucial diseñada para evitar que los atacantes exploten tablas de arcoíris precalculadas o adivinen valores hash comunes. Con diferentes sales, cada contraseña se cifra de forma única, lo que aumenta significativamente el esfuerzo necesario para comprometer el sistema.

Parámetro de costo: personalización de la seguridad

Para mejorar la seguridad del hash de contraseñas , la función password_hash permite a los desarrolladores especificar un parámetro de costo. Este parámetro controla el número de iteraciones utilizadas en el algoritmo hash, aumentando así el esfuerzo computacional necesario para romper el hash. De forma predeterminada, el parámetro de costo se establece en 10, lo que representa un equilibrio razonable entre seguridad y eficiencia. Para aumentar aún más la seguridad, los desarrolladores pueden aumentar este valor, como se demuestra en el siguiente código:

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);

Verificación: Comparación de hashes

Al verificar contraseñas, es esencial asegurarse de que la contraseña no cifrada proporcionada por el usuario tenga el hash correcto antes de compararla con el hash almacenado. Esto se hace usando la función password_verify:

if(password_verify($password4, $dbpassword))

En este fragmento de código, $password4 representa la contraseña ingresada por el usuario (que no tiene hash), y $dbpassword representa la contraseña hash almacenada en su base de datos. Al comparar los dos valores hash, la función devuelve verdadero si las contraseñas coinciden, lo que permite continuar con la autenticación.

Declaración de liberación Este artículo se reimprime en: 1729133237 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3