Das Speichern von Passwörtern mittels einfacher Verschlüsselung reicht nicht aus. Hashing, eine einseitige kryptografische Funktion, bietet eine viel stärkere Lösung, indem es Passwörter in eindeutige, irreversible Werte fester Länge umwandelt.
Im Jahr 2012 war PBKDF2 (Password-Based Key Derivation Function 2) der empfohlene Algorithmus für .NET-Anwendungen. Die Rfc2898DeriveBytes
-Klasse ermöglichte einen sicheren Hashing-Prozess durch die folgenden Schlüsselschritte:
Schritt 1: Salzerzeugung
byte[] salt = new byte[16]; new RNGCryptoServiceProvider().GetBytes(salt);
Schritt 2: Hash-Erstellung
var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);
Schritt 3: Salz und Haschisch verketten
byte[] hashBytes = new byte[36]; Array.Copy(salt, 0, hashBytes, 0, 16); Array.Copy(hash, 0, hashBytes, 16, 20);
Schritt 4: Base64-Kodierung für die Speicherung
string savedPasswordHash = Convert.ToBase64String(hashBytes);
Schritt 5: Passwortbestätigung
byte[] hashBytes = Convert.FromBase64String(savedPasswordHash); byte[] salt = new byte[16]; Array.Copy(hashBytes, 0, salt, 0, 16); var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20); // Compare hash values here...
Die Anzahl der Iterationen (in diesen Beispielen 100.000) in PBKDF2 steuert den Rechenaufwand für das Cracken. Obwohl 10.000 der empfohlene Mindestwert ist, passen Sie diesen Wert entsprechend den Leistungsanforderungen Ihrer Anwendung an. Höhere Iterationszahlen erhöhen die Sicherheit, können sich jedoch auf die Anwendungsgeschwindigkeit auswirken.
Das obige ist der detaillierte Inhalt vonWie sichert PBKDF2 die Passwortspeicherung in .NET (2012)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!