Puedo ver de dónde vienes, pero la respuesta es básicamente "para eso no es la sal". Si estoy tratando de descubrir la contraseña de un usuario particular , el salt no ayuda mucho si está justo al lado del hash. Sin embargo, no es esperado ser útil en esa situación, ya que es muy difícil descifrar la contraseña de un usuario individual.
El punto de la sal es que es algo que se agrega a cada contraseña antes de hacer un hash, de modo que cada contraseña es única; si los dos usuarios tienen hunter2
como contraseña, los hashes deben ser diferentes.
Supongamos que un atacante está pescando en una base de datos (o en una amplia gama de bases de datos) para encontrar a todas aquellas personas cuya contraseña sea letmein123
. Sin sal, pueden hacer el hash una vez y buscar el hash.
Sin una sal si un atacante detecta dos o más hashes idénticos en la base de datos, indica que esta es una contraseña débil (ya que varios usuarios han elegido la misma) y pueden concentrarse en descifrar esta primero.
Pero el salt es un prefijo / sufijo específico del usuario que se agrega a la contraseña antes del hash, por lo que (incluso con un salt "público") un atacante tiene que volver a calcular el hash para cada usuario, por lo que debe verificar una contraseña. contra 10000 usuarios no es más eficiente que verificar 10000 contraseñas contra un usuario, que es el punto.