Il sale è combinato con la password prima dell'hashing. i valori password e salt clear sono concatenati e la stringa risultante è hash. questo garantisce che anche se due persone avessero la stessa password, si otterrebbero diversi hash risultanti. (rende anche gli attacchi noti come attacchi di dizionario che utilizzano tabelle arcobaleno molto più difficili).
Il sale viene quindi memorizzato in formato originale/chiaro insieme al risultato dell'hash. Successivamente, quando si desidera verificare la password, si eseguirà nuovamente il processo originale. Combina il sale del record con la password fornita dall'utente, elimina il risultato, confronta l'hash.
Probabilmente lo sapete già. ma è importante ricordare. il sale deve essere generato casualmente ogni volta. Deve essere diverso per ogni hash protetto. Spesso il RNG viene utilizzato per generare il sale.
esempio So..for:
user-password: "mypassword"
sale casuale: "abcdefg12345"
risultante-in chiaro: "mypassword: abcdefg12345" (come li combinano dipende da voi più a lungo. ogni volta che usi lo stesso formato di combinazione).
hash il testo chiaro risultante: "somestandardlengthhashbasedonalgorithm"
Nel database ora è necessario memorizzare l'hash e il sale utilizzato.L'ho visto in due modi:
Metodo 1:
field1 - sale = "abcdefg12345"
field2 - password_hash = "somestandardlengthhashbasedonalgorithm"
Metodo 2:
field1 - password_hash = "abcdefg12345: somestandardlengthhashbasedonalgorithm "
In entrambi i casi è necessario caricare il sale e la password hash fuori del vostro database e rifare l'hash per il confronto
Trovato un duplicato esatto migliore: http://stackoverflow.com/questions/420843/ –