Die Hashfunktion ist eine kryptografische Prüfsumme für eine Nachricht, um deren Integrität sicherzustellen. Es ist eine mathematische Funktion, die deterministisch ist.
Zu den besonderen Eigenschaften einer Hashfunktion gehören, dass der Input (Zeichenfolge) variabler Länge zu Output fixer Länger, unabhängig von der Länge der Input-Zeichenfolge generiert.
Die Hash-Funktion dient zb. der Reduzierung des Rechenaufwands bei der Verschlüsselung von Daten im asymmetrischen Public-Key-Verfahren. Eine Nachricht variable Länge wird als Input einer Hashfunktion übergeben, die eine Prüfziffer / Prüfsumme fixer Länge als Output erzeugt. Diesen Output bzw. das Ergebnis nennt man den Hashwert. Diese Prüfsumme fester Zeichenlänge besteht bspw.: aus 128 Bit, 256 Bit, 512 Bit, 1024 Bit oder 2048 Bit. Diese Prüfsumme / Prüfziffer lässt die Integrität einer Nachricht deshalb zweifelsfrei feststellen.
Hier lassen sich mittels Hashfunktionen Hashes berechnen: Hash Funktion
Der Output also der Hashwert kann dann vom Absender digital unterschrieben und an die zu versendende Nachricht angehängt werden. Der Empfänger kann auf die empfangene Nachricht dieselbe Hashfunktion anwenden und das Ergebnis mit der entschlüsselten digitalen Unterschrift so vergleichen. Besonders sichere Hashfunktionen sind nicht invertierbar und kollisionsfrei.
Es kann also nie zwei Nachrichten geben, die denselben Hashwert vorweisen. Eine Hashfunktion ist auch deterministisch, den ein Input variabler Länge kann zu einem Output fixer Länger generiert werden, wie bereits beschrieben. Jedoch kann ich aus diesem gewonnenen Hashwert nicht auf die Nachricht rückschließen. Das heisst ich kann zwar immer überprüfen ob ein bestimmter Hashwert bei einer bestimmten Nachricht generiert wird, jedoch kann ich nicht auf die Nachricht zurück übersetzen. Das macht eine Hashfunktion auch so besonders.
Einige Beispiele für Hashfunktionen sind der SHA-Algorithmus (SHA-1, SHA-224, SHA-256, SHA-384 und SHA-512) mit 160 Bit bis 512 Bit Hashwert-Länge und der MD5-Algorithmus (Message-Digest Algorithm 5) mit 128 Bit.
Je länger der Hashwert ist, desto mehr Rechenzeit wird für die Ermittlung des Hashvalues benötigt. Diesen Rechenaufwand misst man in Hashpower.
Sehr gute Beschreibung findest du hier.
Hashfunktion in Javascript hier.