No debe hash la sal, ya que los hashes son de una sola dirección. Necesitas la sal para poder agregarla a la contraseña antes de hash. Puedes encriptarlo, pero no es necesario.
Lo crítico de sales es que cada contraseña debe tener su propia sal. Idealmente, cada sal debe ser única, pero al azar también es buena. Por lo tanto, la sal debe ser lo suficientemente larga como para permitir que sea única para cada contraseña.
Si todas las sales son iguales, es obvio para el cracker (que puede ver sus valores de hash), cuyas cuentas tienen la misma contraseña. Los valores hash serán los mismos. Esto significa que si descifran una contraseña, obtienen más de una cuenta sin trabajo adicional. El cracker incluso podría apuntar a esas cuentas.
Debería suponer que el cracker obtendrá tanto el valor de sal como el de hash, por lo que el algoritmo hash debe ser seguro.
Tener cualquier sal impide el uso de tablas existentes de arcoiris precalculadas para descifrar el valor de hash, y tener una sal única para cada cuenta elimina el deseo de que su cracker precalcular sus propias tablas de arco iris con su sal.
Todavía recomendaría fuertemente no utilizar una sal estática. Probablemente derrota el propósito de tener una sal, incluso si solo almacena una contraseña a la vez. – Slartibartfast
Estoy de acuerdo, probablemente se deba usar una sal diferente para cada contraseña, solo necesita usar la misma sal cada vez para la contraseña de un usuario dado. Pero el punto aquí fue que una sal es solo algo extra añadido. Pasar la sal antes de usarla no cambia eso, solo hace que sea algo extra diferente. –
Es semántica, pero no debe hash una sal. Una sal debe ser recuperable en texto claro para ser utilizada. Como un hash es de una sola manera, no debes poner hash tu sal. Si desea utilizar un algoritmo hash para generar su sal, está bien, pero el valor hash resultante se convierte en el nuevo sal y aún debe poder recuperarlo en texto claro. Si realmente has criticado tu sal, has perdido tu cuenta. –