Creo que confunde un par de conceptos y está preguntando específicamente sobre el hashing de la contraseña, ¿correcto?
El hashing de la contraseña, cuando se realiza correctamente, introduce un factor de trabajo, lo que significa que lleva un tiempo calcular un hash, no estrictamente una "pausa" como la describe, aunque esté involucrado, aunque el usuario final perciba algo Retraso, que podría interpretarse de la misma manera.
Una corrección adicional de la nota: un hash es unidireccional. No hay oportunidad para el descifrado. Por lo tanto, si tiene un hash de una contraseña y quiere averiguar qué contraseña se usó para crear ese hash, la forma en que lo hace es usar la misma función de hash, y enviar las contraseñas candidatas, y comparar el hash resultante. Para el hash que tienes, para ver si coinciden. Esto es lo que normalmente hacen los sitios web (por ejemplo). En términos muy simples, cuando creas una cuenta, se te pide que proporciones una contraseña, que está hash y el hash está almacenado. Cuando vuelva a iniciar sesión, ingrese nuevamente su contraseña, el sitio web trocó lo que le dio y lo comparó con el hash que almacenó. Si coinciden, estás autenticado. Si no, te piden que lo intentes de nuevo.
Por lo tanto, el problema con una función hash simple es que es bastante fácil crear los hashes de muchas contraseñas candidatas muy rápidamente. Entonces, cuando el atacante roba un hash de contraseña de una base de datos, puede crearlos de un diccionario de posibles contraseñas y comparar los hashes resultantes con el hash robado para averiguar cuál es la contraseña a un ritmo asombroso. Para muchas funciones hash comunes, puede probar literalmente miles de millones de contraseñas posibles cada segundo.
La solución para esto, a la que creo que te refieres en tus preguntas, es el factor de trabajo que mencioné, que generalmente se implementa como iteraciones. Entonces, cuando se envía una contraseña para el hashing, no se hace hash una vez, sino 10,000 veces, o 100,000 veces, o 1,000,000 veces. Esto significa que cuando un atacante roba este hash, él también tiene que hashear cada una de sus contraseñas de candidato tantas veces como para averiguar si el candidato es correcto. Así que ahora ha limitado sus intentos posibles de miles de millones por segundo, a miles de millones dividido por 10,000, o dividido por 100,000, o por 1,000,000. Mucho más caro para él, y mucho menos probable que consiga lo suficiente en su lista de contraseñas posibles para encontrar la contraseña real.
En la práctica es un poco más complicado que esto. Debe tener en cuenta detalles como las sales, la dureza computacional y la dureza de la memoria, y otras variables similares, pero en general, a un nivel alto,
Este es un mecanismo por el cual hacer que los hash de contraseña de ataque sean difíciles.