2009-10-31 4 views
6

entschlüsseln, wie der Wert einer Zeichenfolge wiederherzustellen FormsAuthentication.HashPasswordForStoringInConfigFile nach der Verwendung von(), wie eine Zeichenfolge

i einen String s1 = "abc" haben dann

FormsAuthentication.HashPasswordForStoringInConfigFile (s1, SHA1“ „) = A9993E364706816ABA3E25717850C26C9CD0D89D

Wie kann ich entschlüsseln "A9993E364706816ABA3E25717850C26C9CD0D89D" zurück zu "abc" ??

Antwort

19

Sie können nicht, Hash Function sind Einwegfunktionen. Aus diesem Grund wird es für Kennwörter verwendet, da das Kennwort nicht mit einer umgekehrten Funktion für den Hashwert abgerufen werden kann.

13

Nach Bagets Antwort. Der Grund für das Hashing von Passwörtern besteht darin, zu vermeiden, dass Sie das Klartextpasswort für die Authentifizierung speichern müssen.
Stattdessen speichern Sie den Hash des Kennworts.
Ihr Authentifizierungs-/Anmeldevorgang wird dann in etwa so aussehen:

Der Benutzer gibt ein Kennwort ein.
Hash das Passwort, das sie eingegeben haben.
Vergleichen Sie den eingegebenen Hash mit dem gespeicherten Hash.
Wenn Hashes übereinstimmen, ist das Kennwort gültig, damit der Benutzer authentifiziert wird.

Der Grund dafür besteht darin, die Authentifizierungsdetails Ihrer Benutzer zu schützen. Wenn also Ihre Kennwortdatei oder Ihre Datenbank irgendwie public domain wurde, konnte ein böswilliger Benutzer nicht vorgeben, ein echter Benutzer zu sein.

Die Art der Hashing-Funktion bedeutet also, dass es sich um eine Methode handelt und der ursprüngliche Klartext nicht wiederhergestellt werden kann.

Das ist die Theorie, in der Praxis wird es natürlich komplizierter.
Die meisten Benutzer neigen dazu, Kennwörter zu verwenden, die sie sich leicht merken können. Dies bedeutet, dass alle Ihre Bemühungen um Sicherheit zu nichts führen können, denn wenn jemand Ihre Kennwortdatei/DB offline erhält, kann er ein Wörterbuch mit häufigen Wörtern und Brute-Force-Iteraten erstellen und Hash, bis sie einen passenden Hash in Ihrer Liste finden.

Um dies zu vermeiden, verwenden viele Leute eine "Salting" -Technik, bei der dem Kennwort eine kurze kryptographisch "zufällige" Zeichenfolge vor dem Hashing hinzugefügt wird. Weitere Informationen hierzu finden Sie in der folgenden Tabelle. Die andere Frage hier ist die Stärke Ihres Hashalgorithmus - Sie müssen sicherstellen, dass Sie keine Kollisionen erstellen können, d. H. Zwei Teile des Klartexts, die denselben Hashwert erzeugen.
Viele ältere Hashing-Algorithmen wie MD5 und SHA1 sehen in dieser Hinsicht zunehmend verletzlich aus.

MD5 considered broken
SHA1 also considered broken

Hoffnung, die hilft, und ich merke, das ist wahrscheinlich ein bisschen mehr als die fragten, aber ich denke, dass es die Menschen verstehen, Sicherheitsprobleme bei der Implementierung von Authentifizierungscode

+0

Gute Antwort wichtig ist !! :-) – Baget

Verwandte Themen