2009-10-21 10 views
17

Was bedeutet es, ein Passwort zu hashen?Was ist Passwort Hashing?

+8

Können Sie das nicht Google? Könnten Sie Ihre Frage erweitern? Schaust du auf eine Quelle und verstehst etwas nicht? –

+4

@Frank: Ich bin auf Fragen wie diese gekommen. Ihre fehlende Tiefe hat mich auch geärgert, aber wenn wir das ignorieren, können wir eine gute Zielseite von Google für "password hashing" schreiben. –

+0

@Michael, einverstanden. Außerdem ist SO dafür bekannt, dass Sie Ihre Programmierfrage schnell und präzise beantworten können. Was in diesem Fall diesen Ruf fortsetzt. –

Antwort

13

nimmt einen Datenblock und gibt eine Zeichenfolge zurück, so dass Sie den ursprünglichen Datenblock nicht wiederherstellen können.

Wikipedia Article

ein Passwort Hashing wird eine klare Textzeichenfolge nehmen und einen Algorithmus darauf (in Abhängigkeit von dem Hash-Typ) führt einen ganz anderen Wert zu erhalten. Dieser Wert ist jedes Mal gleich, so dass Sie das Hash-Passwort in einer Datenbank speichern und das eingegebene Passwort des Benutzers gegen den Hash überprüfen können.

Diese verhindert Sie das Speichern der Klartext Passwörter in der Datenbank (schlechte Idee).

Hier ist ein list of hash functions.

+0

Ich rate für diesen Link http://en.wikipedia.org/wiki/Cryptographic_hash_function#Cryptographic_hash_algorithms Für Passwort hashing da sollte nur "kryptografische Hashfunktion" verwendet werden, nicht etwa CRC –

6

Ein Hash ist einfach eine Einwegfunktion, die eine Zeichenfolge oder Datenquelle verwendet und eine verschlüsselte Zeichenfolge erstellt.

Es gibt verschiedene Hash-Algorithmen, die am weitesten verbreitet ist MD5, aber es gibt viele andere. Viele Experten der Branche verwenden den SHA256-Algorithmus für eine bessere Sicherheit.

MD5-Hash für die Worte:

Passwort ist 22e5ab5743ea52caf34abcc02c0f161d

PASSWORT 319f4d26e3c536b5dd871bb2c52e3178

Die Zeichenlänge des Ergebnisses wird die gleiche sein, unabhängig davon, wie viele Zeichen Sie zu Hash versuchen. Hashes werden häufig zum Speichern von Kennwörtern verwendet, um zu verhindern, dass sie angezeigt werden.

16

Definition:
Hashing ist die Anwendung einer Funktion auf einen f() variabler Größe Eingang eine konstante Größe Ausgabe zu erzeugen.

A => f() => X 
B => f() => Y 
C => f() => Z 

Ein Hash ist auch eine Einwegfunktion, die bedeutet, dass es keine Funktion ein Hash zu umkehren oder rückgängig gemacht werden. Auch die erneute Anwendung des Hash f(f(x)) wird nicht zum Produkt x wieder gehen.

Die Details:

Eine Hash-Funktion kann so einfach sein wie „13 in dem Eingang“ oder komplex wie ein Cryptographic Hash wie MD5 oder SHA1. Es gibt viele Dinge, die eine gute Hash-Funktion wie bilden:

  • Low Cost: Leicht
  • Deterministic zu berechnen: Wenn ich den Eingang a mehrere Male Hash, werde ich die gleiche Ausgabe jedes Mal
  • bekommen
  • Uniformity: Der Eingang wird gleichmäßig auf die möglichen Ausgänge verteilt. Dies passt zu etwas, das genannt wird. Da es eine begrenzte Anzahl von Ausgängen gibt, möchten wir f() diese Ausgänge gleichmäßig statt in demselben Bucket platzieren.Wenn zwei Eingänge auf denselben Ausgang berechnet werden, wird dies als Kollision bezeichnet. Es ist gut, wenn eine Hash-Funktion weniger Kollisionen erzeugt.

Hashing Passwörter angewendet:

Die Hashing von Passwörtern ist das gleiche Verfahren, wie oben beschrieben, jedoch kommt es mit einigen besonderen Überlegungen. Viele der Eigenschaften, aus denen sich eine gute Hash-Funktion zusammensetzt, sind für Kennwörter nicht vorteilhaft.

Nehmen Sie zum Beispiel Determinismus, weil Hashes ein deterministisches Ergebnis erzeugen, wenn zwei Leute das gleiche Passwort verwenden, wird der Hash im Passwortspeicher gleich aussehen. Das ist eine schlechte Sache! Dies wird jedoch durch etwas, das als salt bezeichnet wird, gemildert.

Gleichmäßigkeit auf der anderen Seite ist vorteilhaft, weil der Wunsch nach dem Algorithmus ist, Kollisionen zu begrenzen.

Da ein Hash ist One-Way bedeutet, dass die Eingabe kann nicht aus der Ausgabe bestimmt werden, weshalb Hashing ist großartig für Kennwörter!

Verwandte Themen