bcrypt y sales generadas aleatoriamente
bcrypt es un algoritmo de hash de contraseñas que utiliza salting para mejorar la seguridad. Salting implica incorporar datos aleatorios en el hash de la contraseña, lo que garantiza que incluso contraseñas idénticas produzcan resultados hash diferentes.
La clase PHP proporcionada incluye una función llamada genSalt() que genera una sal aleatoria usando la función openssl_random_pseudo_bytes(). Esta sal luego se usa como parte del proceso de hash de bcrypt en la función genHash().
La función genHash() toma una contraseña y la combina con la sal generada aleatoriamente. El hash resultante es una mezcla de la contraseña original, salt y un prefijo específico del algoritmo ($2y$) que indica el algoritmo bcrypt y sus parámetros (por ejemplo, factor de carga de trabajo).
Para verificar una contraseña, la función verificar() proporcionada compara la contraseña ingresada con el hash almacenado. Para ello, concatena la contraseña proporcionada con el hash almacenado y utiliza la función crypt() para volver a aplicar el hash.
La clave para comprender por qué la sal generada aleatoriamente no afecta la verificación de la contraseña es examinar el formato del hash almacenado. El hash consta de dos partes principales:
Cuando la función verificar() codifica la contraseña proporcionada con el hash almacenado, utiliza solo la porción salt como entrada. Esto garantiza que la sal se incorpore al proceso de verificación.
En resumen, mientras que bcrypt genera sales aleatorias para garantizar la seguridad de la contraseña, el proceso de verificación de contraseña solo tiene en cuenta la porción de sal de el hash almacenado. Esto permite verificar la contraseña proporcionada con el hash almacenado, aunque el salt se genere aleatoriamente.
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