Bei Hash-Algorithmen handelt es sich um Einwegfunktionen. Es wird eine beliebig lange Eingabe übergeben und ein Wert konstanter Länge herausgegeben, der Hash-Wert. Ziel bei dem Entwurf einer kryptographisch sicheren Hash-Funktion ist es, dass sich von der Ausgabe nicht mehr auf die Eingabe schließen lässt.

Hash-Funktionen können zum Beispiel zum Speichern von Passwörtern in Datenbanken benutzt werden. Anstatt ein Passwort im Klartext abzuspeichern, welches möglicherweise durch einen Angreifer oder durch einen Administrator ausgelesen werden könnte, wird nur der Hash-Wert gespeichert. Will sich ein Nutzer gegenüber dem System authentifizieren, so übersendet er sein Passwort. Das System bildet den Hash-Wert aus dem Passwort und vergleicht es mit dem gespeicherten Hash-Wert aus der Datenbank. Sind beide Werte gleich, hat der Nutzer das richtige Passwort übersendet.

Es ist einem Angreifer jedoch nicht möglich vom Hash-Wert auf das Passwort zu schließen, welches das System erwartet.

Da die Eingabe an eine Hash-Funktion beliebig lang sein kann, die Ausgabe aber konstante Länge hat, führt es zwangsweise dazu, dass es verschiedene Eingaben gibt, die zu der gleichen Ausgabe führen. Das Auftreten zweier Eingaben, die zu der gleichen Ausgabe führen, nennt man Kollision. Bei einer sicheren Hash-Funktion sollte es nicht möglich sein, schneller als durch bloßes Ausprobieren eine Kollision zu finden.

Ein weiteres Anwendungsfeld für Hash-Funktionen ist die Erzeugung von Prüfsummen. Prüfsummen werden verwendet, um zu prüfen, ob bestimmte Daten verändert wurden. Diese Änderungen können durch böswilligen Einfluss oder durch Zufall, zum Beispiel bei einer Datenübertragung, entstehen. So wird nach einer Datenübertragung der Hash-Wert der empfangenen Daten berechnet und mit dem Hash-Wert, der von der Übertragung berechnet wurde, verglichen. Sind die Daten nur minimal verschieden, sind die beiden Hash-Werte völlig unterschiedlich.

Schließlich werden Hash-Werte auch bei digitalen Signaturen verwendet.