Le sel est combiné avec le mot de passe avant le hachage. le mot de passe et les valeurs d'effacement sont concaténées et la chaîne résultante est hachée. Cela garantit que même si deux personnes avaient le même mot de passe, vous obtiendriez des hachages différents. (rend également les attaques connues sous le nom d'attaques par dictionnaire à l'aide de tables arc-en-ciel beaucoup plus difficiles).
Le sel est ensuite stocké dans le format original/clair avec le résultat du hachage. Plus tard, lorsque vous voudrez vérifier le mot de passe, vous referez le processus d'origine. Combiner le sel de l'enregistrement avec le mot de passe fourni par l'utilisateur, hacher le résultat, comparer le hachage.
Vous le savez probablement déjà. mais c'est important de se souvenir. le sel doit être généré au hasard à chaque fois. Il doit être différent pour chaque hash protégé. Souvent, le RNG est utilisé pour générer le sel.
exemple So..for:
utilisateur-mot de passe: "mypassword"
de sel au hasard: "abcdefg12345"
résultant-texte clair: "mypassword: abcdefg12345" (comment les combiner est à vous aussi longtemps. car vous utilisez le même format de combinaison à chaque fois).
hacher le résultat cleartext: "somestandardlengthhashbasedonalgorithm"
Dans votre base de données maintenant, vous stockez le hachage et le sel utilisés.Je l'ai vu deux façons:
Méthode 1:
field1 - sel = "abcdefg12345"
field2 - password_hash = "somestandardlengthhashbasedonalgorithm"
Méthode 2:
field1 - password_hash = « abcdefg12345: somestandardlengthhashbasedonalgorithm "
Dans les deux cas, vous devez charger le hachage de sel et le mot de passe de votre base de données et refaire le hachage pour la comparaison
Trouvé un meilleur 'exact duplicate:' http://stackoverflow.com/questions/420843/ –