Sal se combina con la contraseña antes de hash. los valores de contraseña y claro sal se concatenan y la cadena resultante se procesa en hash. esto garantiza que incluso si dos personas tuvieran la misma contraseña, tendrías hashes resultantes diferentes. (también hace que los ataques conocidos como ataques de diccionario usando tablas de arco iris sean mucho más difíciles).
La sal se almacena en formato original/claro junto con el resultado hash. Luego, más adelante, cuando quiera verificar la contraseña, volverá a realizar el proceso original. Combina la sal del registro con la contraseña que el usuario proporcionó, hash el resultado, compara el hash.
Probablemente ya lo sepa. pero es importante recordar la sal debe generarse al azar cada vez. Debe ser diferente para cada hash protegido. Muchas veces el RNG se usa para generar la sal.
ejemplo So..for:
usuario-contraseña: "micontraseña"
sal al azar: "abcdefg12345"
resultante-texto claro: "mypassword: abcdefg12345" (¿cómo se combinan depende de usted siempre. ya que usa el mismo formato de combinación cada vez).
hash el texto claro resultante: "somestandardlengthhashbasedonalgorithm"
En su base de datos ahora puede almacenar el hash y la sal utilizados.Lo he visto dos maneras:
método 1:
campo1 - sal = "abcdefg12345"
campo2 - password_hash = "somestandardlengthhashbasedonalgorithm"
Método 2:
campo1 - password_hash = "abcdefg12345: somestandardlengthhashbasedonalgorithm "
En cualquiera de los casos tiene que cargar la sal y el hash de la contraseña de su base de datos y rehacer el hash para la comparación
Encontré un mejor 'duplicado exacto': http://stackoverflow.com/questions/420843/ –