Hashing und Verschlüsselung sind leicht unterschiedliche Konzepte, auch wenn md5() und sha1() und ähnliche im Wesentlichen Verschlüsselungsfunktionen sind, die Hashing durchführen. Da Hashing in der Theorie eine eindeutige Ausgabe für eine gegebene Eingabe (in der Regel von größerer Größe) liefern sollte, bedeutet dies im Wesentlichen, dass jeder Hash auf eine einzige Eingabe abgebildet werden sollte - was bedeutet, dass Sie eine perfekte Kompressionsfunktion in den Händen halten, die Daten der Größe N, die in der Regel größer als M sind, auf Daten der Größe M reduzieren kann, und der Prozess ist reversibel. In der Praxis kommt es jedoch zu Hash-Kollisionen. Das bedeutet, dass ein Hash möglicherweise mehr als einer ursprünglichen Eingabe zugeordnet werden kann. Das bedeutet, dass ein einziger Passwort-Hash einen Benutzer mit einem ganz anderen Passwort finden kann, was ein echtes Sicherheitsproblem darstellt.
Die Verschlüsselung hingegen garantiert, dass sie umkehrbar ist (natürlich mit dem richtigen Entschlüsselungsschlüssel), wobei die verschlüsselten Daten in einer Eins-zu-Eins-Beziehung zu den ursprünglichen Daten stehen. Wenn Ihr Kennwort N lang ist, hat Ihr verschlüsseltes Kennwort ebenfalls die Größe N. Kennwörter sind genauso sicher und kollisionsfrei.
Wie man so schön sagt: Wenn etwas zu schön ist, um wahr zu sein, dann ist es das wahrscheinlich auch. Wenn Hashing umkehrbar wäre, um immer die Originaldaten zu erzeugen, dann bräuchten wir keine Datenkomprimierungsalgorithmen - wir könnten Daten beliebiger Größe nehmen, sie hacken, um einige 128-Bit lange Daten zu erzeugen, und erwarten, dass sie bei Bedarf wieder die Originaldaten ergeben. Dies ist jedoch nicht der Fall. Je länger die Originaldaten sind, desto unzuverlässiger ist der Hash, unabhängig von seiner Länge.
Erfinden Sie ein Verschlüsselungs-/Entschlüsselungs-Schlüsselpaar und verschlüsseln Sie die Kennwörter Ihrer Benutzer, bevor Sie sie an öffentlichen Orten speichern.
0 Stimmen
Ich habe in meiner Antwort über den Geburtstagsangriff gesprochen: de.wikipedia.org/wiki/Geburtstag_Anschlag Sie gibt die Wahrscheinlichkeit einer Kollision angesichts der Anzahl der Versuche und der Anzahl der möglichen Hashes (basierend auf den Bits) an. Dies gilt für einen Brute-Force-Angriff. Die Wahrscheinlichkeit ist höher, wenn der Hash "geknackt" werden kann.
0 Stimmen
stackoverflow.com/questions/615704/
0 Stimmen
Vielleicht finden Sie meine Artikelserie zu diesem Thema interessant. blogs.msdn.com/ericlippert/archive/tags/Salt/default.aspx
0 Stimmen
Eine Lib für dies: encrypto.codeplex.com