Immer wieder liest man in den Nachrichten, dass eine Datenbank geknackt wurde und somit alle Benutzernamen mit Passwörtern entwendet wurden. Häufig wird eine Kombination aus Benutzername und Passwort von einem Benutzer bei unterschiedlichen Diensten genutzt, so dass die Kenntnis dieser zum Missbrauch verschiedenster Dienst führen könnte.
Somit ist die minimale Sicherheitsidee die, dass Passwörter nicht im Klartext gespeichert werden. Für diesen Zweck bieten sich Hash-Funktionen an, die zu jedem Eingangstext einen Ausgabewert (Hash-Wert) mit fester Länge (also beispielsweise genau 256 Bit) erstellen, wobei es nahezu unmöglich sein soll , unter der Kenntnis eines solchen Hash-Wertes den ursprünglichen Eingangstext zu rekonstruieren (bedeutet: die Rechenzeit dafür soll so groß sein, dass es quasi unmöglich ist).
Es kann vorkommen, dass unterschiedliche Eingangstexte zu gleichen Hashes führen (sogenannte Kollisionen), wobei die Wahrscheinlichkeit dafür möglichst klein sein soll.
Wichtig ist, dass identische Eingangstexte immer zu identischen Hash-Werten führen.
Je nach Einsatzgebiet ist mal der eine, mal der andere Algorithmus besser geeignet. So wird MD5 häufig verwendet, um die Integrität von Daten zu überprüfen, also beispielsweise, ob eine Datei richtig heruntergeladen wurde.
Hier einige Beispiele für Hash-Werte:
Immer wieder liest man in den Nachrichten, dass eine Datenbank geknackt wurde und somit alle Benutzernamen mit Passwörtern entwendet wurden. Häufig wird eine Kombination aus Benutzername und Passwort von einem Benutzer bei unterschiedlichen Diensten genutzt, so dass die Kenntnis dieser zum Missbrauch verschiedenster Dienst führen könnte.
Somit ist die minimale Sicherheitsidee die, dass Passwörter nicht im Klartext gespeichert werden. Für diesen Zweck bieten sich _Hash-Funktionen_ an, die zu jedem Eingangstext einen Ausgabewert (_Hash-Wert_) mit fester Länge (also beispielsweise genau 256 Bit) erstellen, wobei es nahezu unmöglich sein soll , unter der Kenntnis eines solchen Hash-Wertes den ursprünglichen Eingangstext zu rekonstruieren (bedeutet: die Rechenzeit dafür soll so groß sein, dass es quasi unmöglich ist).
Es kann vorkommen, dass unterschiedliche Eingangstexte zu gleichen Hashes führen (sogenannte _Kollisionen_), wobei die Wahrscheinlichkeit dafür möglichst klein sein soll.
Wichtig ist, dass identische Eingangstexte immer zu identischen Hash-Werten führen.
Es gibt unterschiedliche Algorithmen, solche Hash-Werte zu berechnen. So wären da die Algorithmen MD5, SHA-1 und SHA-256, die man auf der Seite
http://www.xorbin.com/tools/sha256-hash-calculator ausprobieren kann.
Je nach Einsatzgebiet ist mal der eine, mal der andere Algorithmus besser geeignet. So wird MD5 häufig verwendet, um die Integrität von Daten zu überprüfen, also beispielsweise, ob eine Datei richtig heruntergeladen wurde.
Hier einige Beispiele für Hash-Werte: