Eine Hash-Funktion wandelt Daten beliebiger Länge in einen Wert fester Länge (Hash bzw. Digest) um. Dieselbe Eingabe ergibt stets denselben Hash, doch schon ein Unterschied von nur einem Bit führt zu einem völlig anderen Hash.
Die zentrale Eigenschaft eines guten kryptografischen Hashs ist seine Einwegeigenschaft. Aus dem bloßen Hash-Wert die ursprüngliche Eingabe zurückzugewinnen, ist praktisch unmöglich. Speichert man Passwörter deshalb als Hash statt im Klartext, lässt sich der Originaltext selbst bei einem Datenleck nicht unmittelbar erkennen.
Eine Kollision liegt vor, wenn zwei unterschiedliche Eingaben denselben Hash ergeben. Theoretisch existieren solche Kollisionen, doch bei einem sicheren Hash muss es rechnerisch unmöglich sein, sie absichtlich zu erzeugen. Genau deshalb wurden MD5 und SHA-1 ausgemustert – weil sich bei ihnen Kollisionen erzeugen lassen.
Für die Passwortspeicherung reicht ein Hash allein nicht aus. Da dasselbe Passwort denselben Hash ergibt, fügt man jeder Eingabe einen zufälligen Wert, das Salt (salt), hinzu, bevor man hasht, und setzt langsame Hashes wie bcrypt oder Argon2 ein, um massenhafte Rateangriffe zu verlangsamen.