Enumerar a través de todas las contraseñas posibles, tener cada una en la memoria en algún momento, es un proceso extremadamente rápido. Se puede suponer que una PC simple podrá construir una contraseña de este tipo por ciclo de reloj y por núcleo de CPU. Por lo tanto, la PC enumerará miles de millones de contraseñas por segundo. Si las cifras que ve son sustancialmente inferiores a eso, entonces también incluyen el costo de verificación de la contraseña.
El costo de verificación de la contraseña es altamente variable. Normalmente, el sistema que quiere verificar las contraseñas almacena contraseñas con hash con sal. . Si la función de hash es SHA-1 , una CPU Intel Core2 x86, que funciona a 2.4 GHz, podrá para probar unos 12 millones de contraseñas por segundo (y por núcleo): esta es la velocidad a la que el procesador podrá aplicar la función hash en cada contraseña (la enumeración de la contraseña en sí misma es inferior al 1% de ese costo). Mi PC es de cuatro núcleos, por lo que son 48 millones por segundo. También tengo una tarjeta gráfica Nvidia no muy mala que puede hacer hashing de contraseñas, en realidad 160 millones por segundo con un simple SHA-1 en bruto. A esa velocidad, todas las contraseñas de 8 caracteres (con letras mayúsculas y minúsculas y dígitos) se comprueban aproximadamente quince días.
Los buenos esquemas de almacenamiento de contraseñas utilizan hashes iterativos o concatenados, en los que la contraseña se oculta miles de veces: esto hace que la verificación de la contraseña sea miles de veces más lenta, lo que no implica una ralentización perceptible para el usuario, pero hace que la tarea sea mucho más difícil (a saber, , miles de veces mucho más difícil) para el atacante.