oke dan, ik zal het proberen eenvoudig uit te leggen.
Een hash is een getal (soort van!) dat iets zegt over een tekenreeks (bestand of wachtwoord).
Het mooie ervan is, is dat je vanuit een hash niet de orginele tekenreeks terug kan maken. Een hash zegt dus wel iets over een tekenreeks, maar zegt niet wat de tekenreeks is (vergelijk met een auto die je door een versnipperaar heen haalt, de grootte en samenstelling van de berg gruis zegt wel iets over de auto, maar terugmaken lukt je niet).
De berekening (versnipperaar) die gebruikt wordt om een hash te maken is publiek.
Als jij de tekenreeks dus weet, en de berekening over de tekenreeks uitvoert, krijg je altijd dezelfde hash terug.
Veelgebruikte manieren om een hash te maken zijn bijvoolbeeld MD5 of beter SHA1.
http://nl.wikipedia.org/wiki/MD5
http://nl.wikipedia.org/wiki/SHA-familie
Let op: de berekening werkt echt maar één kant op. De hash zegt dus iets over de tekenreeks, maar deze kan niet teruggemaakt worden. Dat lijkt allemaal redelijk veilig, en dat is het ook.
Alleen, als jouw wachtwoord 1234 is, en de hash zou 5678 zijn, dan kan je die hash tegenwoordig terugvinden in tabellen op het Internet. Vooral als het een wachtwoord is dat eenvoudig te raden is (zoals 1234).
Vandaar de salt. De website voegt nu aan ieder wachtwoord automatisch en altijd die salt toe en daarmee wordt de hash anders.
dus: wachtwoord "1234" + salt "abcd" = hash "32fr".
Daarom is de salt best belangrijk, hij maakt hashes weer uniek en moelijk terugzoekbaar in databases.
De website hoeft je wachtwoord niet te weten, maar wel de hash. Want iedere keer dat jij inlogt en je wachtwoord inklopt, wordt de hash berekend, en als die hetzelfde is als degene die opgeslagen is, is je wachtwoord dus goed.