un esempio vale 1000 parole:
l'utente all'atto della login inserisce la password "html" e il sistema confronta se md5("html") corrisponde all'hash della password salvato in database.codice:password = "html" MD5(html) = fc35fdc70d5fc69d269883a822c7a53e
html è una parola "comune" e probabilmente sarà in qualche database di hash
Con il salt
l'utente inserisce comunque la password "html" e non gli serve sapere il salt: il sistema di login verifica se MD5(pass+salt) corrisponde all'hash in database. Se un curioso trovasse quell'hash da qualche parte, utilizzando uno dei vocabolari hash-parola in chiaro non potrebbe risalire ad html.codice:password = "html" salt = "a!jKl7&@#è1" MD5("htmla!jKl7&@#è1") = 35a063eb88fcb3b718e54f11c1c9c993
Le dolenti note a cui accennava andbin: md5 produce 2^32 hash diversi. Tanti, ma pur sempre finiti. Le possibili parole, frasi - sequenze di byte in genere sono potenzialmente infinite, quindi infinite sequenze di byte hanno... lo stesso hash!! Ecco che per esempio l'inferno di dante per intero potrebbe, magari, avere lo stesso hash di "ciao"... la cosa è risaputa ed accettata salvo specifiche esigenze di sicurezza.