Eine Hashfunktion ist eine effizient berechenbare Funktion, die eine beliebig große Eingabe – etwa eine Nachricht oder eine Datei – auf einen Ausgabewert fester Länge abbildet, den sogenannten Hashwert.
Egal wie lang oder kurz der Eingabetext ist: Eine Hashfunktion erzeugt daraus immer einen Ausgabewert mit fester Länge, vergleichbar mit einem digitalen Fingerabdruck. Schon die kleinste Änderung an der Eingabe – ein einzelnes verändertes Zeichen – führt zu einem vollständig anderen Hashwert. Das macht Hashfunktionen zu einem einfachen, aber wirkungsvollen Werkzeug, um zu prüfen, ob Daten unverändert geblieben sind.
Eine Hashfunktion bildet eine große Menge möglicher Eingaben auf eine kleinere Menge möglicher Ausgaben ab; dadurch können theoretisch mehrere unterschiedliche Eingaben denselben Hashwert erzeugen, was als Kollision bezeichnet wird. Für kryptographische Hashfunktionen gelten deshalb besondere Anforderungen: Sie müssen praktisch kollisionsresistent sein, also das gezielte Finden zwei unterschiedlicher Eingaben mit demselben Hashwert extrem erschweren, und sie dürfen aus einem gegebenen Hashwert nicht auf die ursprüngliche Eingabe zurückschließen lassen. Gängige kryptographische Hashfunktionen wie aus der SHA-2- oder SHA-3-Familie erzeugen Hashwerte mit einer festen Mindestlänge, die so gewählt ist, dass ein Erraten der Eingabe praktisch ausgeschlossen ist.
Beim Herunterladen einer Softwaredatei stellt die Anbieterin häufig den zugehörigen Hashwert bereit. Nach dem Download berechnet die eigene Software denselben Hashwert über die heruntergeladene Datei; stimmen beide Werte überein, ist die Datei unverändert und vollständig übertragen worden.
Hashfunktionen werden eingesetzt, um die Integrität von Dateien und Nachrichten zu prüfen, um Passwörter sicher zu speichern, ohne sie im Klartext abzulegen, sowie als Baustein in digitalen Signaturen, Blockchain-Verfahren und zahlreichen weiteren kryptographischen Anwendungen.
Eine Hashfunktion ist keine Verschlüsselung: Aus einem Hashwert lässt sich die ursprüngliche Eingabe grundsätzlich nicht wieder zurückgewinnen, während eine Verschlüsselung bewusst umkehrbar gestaltet ist. Häufig wird außerdem übersehen, dass ältere Hashfunktionen wie MD5 oder SHA-1 inzwischen als kryptographisch unsicher gelten, weil praktikable Kollisionsangriffe gefunden wurden, und für sicherheitsrelevante Anwendungen durch modernere Verfahren ersetzt werden sollten.
Nicht zu verwechseln mit Verschlüsselung: Verschlüsselung macht Daten absichtlich wieder entschlüsselbar, eine Hashfunktion erzeugt dagegen einen nicht umkehrbaren Fingerabdruck der Eingabe. Ebenfalls abzugrenzen ist Prüfsumme: Einfache Prüfsummen dienen primär dem Erkennen zufälliger Übertragungsfehler und erfüllen meist nicht die strengeren Sicherheitsanforderungen kryptographischer Hashfunktionen gegen gezielte Manipulation.