Hash
Ein Hash oder auch Hash-Funktion ist ein Algorithmus, der Daten beliebiger Länge auf Daten fester Länge abbildet. Die von einer Hash-Funktion zurückgegebenen Werte werden Hash-Werte, Hash-Codes, Hash-Summen, Prüfsummen oder einfach Hashes genannt. Die jüngste Entwicklung von Internet-Zahlungsnetzen und digitalem Geld wie Bitcoin verwendet auch eine Art Hashing für Prüfsummen und hat dem Begriff zusätzliche Aufmerksamkeit gewidmet.
Hash-Funktion Beschreibung[Bearbeiten]
Hash-Funktionen werden hauptsächlich dazu verwendet, Ausgabedaten mit fester Länge zu erzeugen, die als verkürzte Referenz auf die Originaldaten dienen. Das ist nützlich, wenn die Originaldaten zu unhandlich sind, um sie vollständig zu verwenden.
Eine praktische Anwendung ist eine Datenstruktur, die als Hash-Tabelle bezeichnet wird, in der die Daten assoziativ gespeichert werden. Die lineare Suche nach dem Namen einer Person in einer Liste wird mit zunehmender Länge der Liste umständlich. Mit dem Hashwert kann jedoch ein Verweis auf die Originaldaten gespeichert und eine konstante Zeit (Kollisionssperre) abgerufen werden. Eine andere Verwendung ist in der Kryptographie, der Wissenschaft der Verschlüsselung und Sicherung von Daten. Es ist einfach, Hashwerte aus Eingabedaten zu generieren und einfach zu überprüfen, ob die Daten mit dem Hash übereinstimmen, aber es ist schwer, einen Hashwert zu ‘fälschen’, um schädliche Daten zu verbergen. Dies ist das Prinzip des PGP-Algorithmus für die Datenvalidierung.
Um als effektiv betrachtet zu werden, muss eine Hash-Funktion die folgenden Eigenschaften haben:
- Recheneffizienz - Es sollte nicht lange dauern, einen Hash aus einer gegebenen Eingabe zu berechnen.
- Kollisionsbeständigkeit - Es sollte schwierig sein, eindeutige Eingaben zu finden, die nach Anwendung der Hash-Funktion zu demselben Hash führen würden.
- Möglichkeit, Informationen auszublenden - Es ist schwierig, aus dem Hash nützliche Informationen über die Eingabe abzuleiten, sei es die gesamten Eingabedaten oder einfache Informationen darüber, ob es sich um eine gerade oder ungerade Zahl handelt.
- Zufällig aussehender Hash - Der Hash sollte so aussehen, als wäre er auf mehrere zufällige Ereignisse zurückzuführen, wie das Münzwurfspiel. Es sollte kein offensichtlich bestimmtes Transformationsprotokoll geben.
Hashfunktion von Bitcoin[Bearbeiten]
Bitcoin verwendet den SHA-256-Hash-Algorithmus, um nachweislich "zufallszahlen" auf eine Weise zu generieren, die einen vorhersehbaren CPU-Aufwand erfordert. Wenn Sie einen SHA-256-Hash mit einem niedrigeren Wert als das aktuelle Ziel generieren, wird ein Block aufgelöst und Sie erhalten einige Münzen.