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
<code class="language-csharp">byte[] salt = new byte[16]; new RNGCryptoServiceProvider().GetBytes(salt);</code>
Schritt 2: Hash-Erstellung
<code class="language-csharp">var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);</code>
Schritt 3: Salz und Haschisch verketten
<code class="language-csharp">byte[] hashBytes = new byte[36]; Array.Copy(salt, 0, hashBytes, 0, 16); Array.Copy(hash, 0, hashBytes, 16, 20);</code>
Schritt 4: Base64-Kodierung für die Speicherung
<code class="language-csharp">string savedPasswordHash = Convert.ToBase64String(hashBytes);</code>
Schritt 5: Passwortbestätigung
<code class="language-csharp">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...</code>
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!