In che modo un'applicazione autentica la password di un utente se ogni volta che fornisce la sua password per accedere al suo account la password fornisce un valore diverso?
La premessa della tua domanda non è corretta. Un diverso sale non viene utilizzato ogni volta che viene fornita la password.
Ecco come funziona la quthentication basata su password:
Potrebbe essere più chiaro se si separa il processo di registrazione dal processo di autenticazione.
Al momento della registrazione:
L'utente fornisce le credenziali. Molto spesso questo include UserID + Password. Tieni presente che l'utente (o l'agente utente) non fornisce sale in questa fase.
Il server genera un sale esclusivo per quell'utente e lo utilizza in un algoritmo di hashing unidirezionale per generare un digest-password.
Il sale è memorizzato nel database insieme a password-digest.
Al momento dell'autenticazione (quando l'utente torna al login) - ogni volta:
L'utente fornisce la UserID + Password. Tieni presente che l'utente non fornisce sale.
Il server utilizza l'ID utente come chiave di ricerca e recupera il sale e il digest-password-memorizzato per quell'utente
Il server combina quindi la password fornita dall'utente + recuperata nello stesso modo di prima - per generare un digest basato su password fornito dall'utente. Si noti che il sale viene recuperato dal database, non appena generato.
Il server confronta quindi lo stored-password-digest con il digest-user-supplied-password-based per decidere se l'autenticazione ha esito positivo o negativo.