Når man laver et login‑system, må man aldrig gemme passwords i klar tekst i databasen. Hvis databasen bliver stjålet, vil alle brugeres passwords ellers være synlige.
I stedet bruger man disse principper:
En hash er resultatet af en énvejskryptering:
Eksempel:
Password: "hemmeligt123" Hash: "A94A8FE5CCB19BA61C4C..."
Når brugeren logger ind:
Et salt er en tilfældig tekst, som lægges sammen med passwordet før hashing.
Eksempel:
Password: hemmeligt123 Salt: X7f@9Q! Resultat: hemmeligt123X7f@9Q!
Det samlede resultat hashes derefter.
Salt forhindrer to vigtige angreb:
Uden salt:
"1234" → samme hash for alle brugere
Med salt:
"1234" + saltA → hash1 "1234" + saltB → hash2
Selv om to brugere har samme password, får de forskellige hashes.
I databasen gemmer man typisk:
* `PasswordHash` * `Salt`
Eksempel på tabel:
id | username | password_hash | salt
Man gemmer aldrig selve passwordet.
I C# gør man typisk:
Ved login:
***