El problema aquí es que la misión de la sal no es ser "secreta", el propósito es ser único, de modo que cuando un atacante "intente una contraseña" con esa sal conocida solo pueda comparar el pase generado con este original hash porque todas las demás contraseñas tendrán hashes diferentes.
Por ejemplo:
Considere no tener sal:
usuario1: hashpass1
usuario2: hashpass2
usuario3: hashpass3
usuario4: hashpass1
usuario5: hashpass5
Como puede ver, user1 y user4 usan la misma contraseña porque el hash generado es idéntico. Entonces, cuando un atacante encuentra esto, puede marcar una palabra común, por ejemplo: "conejo" y luego comparar conejo con toda la base de datos de contraseñas. También sabrá que todos los hashes idénticos se han generado con la misma contraseña.
Esto es genial para un atacante porque solo necesita hacer Hash UNA vez para compararla con toda la base de datos.
Por otro lado, considere la misma tabla de usuarios con sal
usuario1: sal1: salted1hashpass1
usuario2: sal2: salted1hashpass2
usuario3: sal3: salted1hashpass3
usuario4: sal4: salted4hashpass1
usuario5: sal5: salted1hashpass5
Ahora, todos los hashes de contraseñas son diferentes debido a la sal, incluso el usuario 1 y el usuario 4 que usaron la misma contraseña tienen hashes diferentes.
Esta es una mala noticia para un atacante, ya que tendrá que calcular la palabra conejo con cada sal que encuentre en la base de datos, por lo que tendrá mucho tiempo para hacerlo. Y este es el verdadero valor agregado por la sal.