Eine Hash-Funktion (von en. "to hash": zerhacken, dt. Bezeichnung: Streuwertfunktion) ist eine nicht umkehrbare Funktion (ein Algorithmus), die eine umfangreiche Quellmenge (i.d.R. Texte) auf eine wesentlich kleinere Zielmenge (Hash-Werte, i.d.R. natürliche Zahlen und Buchstaben) abbildet. Der Hashwert kann zum Auffinden von Daten in einer Datenbank oder zum digitalen Signieren eines Dokumentes verwendet werden. Prüfsummen erzeugen ebenfalls eine Abbildung auf eine reduzierte Datenmenge, hier mit dem Ziel, die Datenintegrität bei Störeinflüssen sicherzustellen.
Kriterien für eine gute Hash-Funktion
- Der Speicherbedarf des Hash-Wertes soll deutlich kleiner sein als der der Nachricht.
- Ähnliche Quellelemente sollen zu völlig verschiedenen Hash-Werten führen. Im Idealfall verändert das Umkippen eines Bits in der Eingabe durchschnittlich die Hälfte aller Bits im resultierenden Hash-Wert.
- Die Funktion muss deterministisch von der Quellmenge auf die Zielmenge abbilden. Wiederholtes Berechnen des Hash-Wertes desselben Quellelements muss also dasselbe Ergebnis liefern.
- Die Funktion muss schnell berechenbar sein.
Zusätzliche Forderungen für kryptographisch sichere Hash-Funktionen:
- Es darf nicht effizient möglich sein, zwei Quellelemente mit demselben Hash-Wert zu finden. Andererseits sind Kollisionen bei der Adressberechnung in Datenbanken nicht zu vermeiden, so dass eine entsprechende Behandlungs-Strategie verfügbar sein muss.
- Zu der Funktion gibt es keine effizient berechenbare inverse Funktion, mit der es möglich wäre, für ein gegebenes Zielelement ein passendes Quellelement zu finden.
Allgemeine Hash-Algorithmen
Parität, Prüfziffer, ECC, Quersumme, Prüfsumme, Modulo-Funktion, Cyclic Redundancy Check, Hash-Wert