Lo que probablemente signifique el póster del blog es que debe marcar la contraseña provista cuando el usuario intenta iniciar sesión, y tendrá que hacer ese hash para cada intento de inicio de sesión, ya que el servidor almacena solo el hash.
Es posible, pero no probable, que el autor realmente haya querido cambiar la sal y volver a calcular un nuevo hash en cada inicio de sesión, lo que sería un poco estúpido, explicando por qué lo considero "improbable". Pero bueno, esto es Internet, cualquier cosa puede pasar.
La publicación del blog está parcialmente a la derecha. Sí, necesitas un hash lento y salado . Pero no, un bucle casero de hashing no puede ser aprobado. Los algoritmos criptográficos no deben improvisarse; hecho en casa es malo . Lo que debe usarse es una construcción bien examinada que ha sido inspeccionada por muchos criptógrafos durante mucho tiempo. Consulte esta respuesta para obtener detalles sobre las soluciones habituales. En PHP, esto significa usar la función crypt()
con el parámetro CRYPT_BLOWFISH
.
(Aparte de la necesidad de usar construcciones estándar, también es importante usar una implementación rápida , ya que todo el concepto de hashing lento es una competencia muscular entre la máquina del atacante y la máquina del defensor. El uso de las funciones estándar de PHP permite acceder a implementaciones de código nativo, que serán mucho más eficientes que cualquier cosa escrita en PHP.)