Le stockage des mots de passe à l'aide d'un simple cryptage est insuffisant. Le hachage, une fonction cryptographique unidirectionnelle, offre une solution beaucoup plus efficace en transformant les mots de passe en valeurs uniques, irréversibles et de longueur fixe.
En 2012, PBKDF2 (Password-Based Key Derivation Function 2) était l'algorithme recommandé pour les applications .NET. La classe Rfc2898DeriveBytes
a facilité un processus de hachage sécurisé à travers ces étapes clés :
Étape 1 : Génération de sel
<code class="language-csharp">byte[] salt = new byte[16]; new RNGCryptoServiceProvider().GetBytes(salt);</code>
Étape 2 : Création de hachage
<code class="language-csharp">var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);</code>
Étape 3 : concaténer le sel et le hachage
<code class="language-csharp">byte[] hashBytes = new byte[36]; Array.Copy(salt, 0, hashBytes, 0, 16); Array.Copy(hash, 0, hashBytes, 16, 20);</code>
Étape 4 : Encodage Base64 pour le stockage
<code class="language-csharp">string savedPasswordHash = Convert.ToBase64String(hashBytes);</code>
Étape 5 : Vérification du mot de passe
<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>
Le nombre d'itérations (100 000 dans ces exemples) dans PBKDF2 contrôle le coût de calcul du craquage. Bien que 10 000 soit le minimum suggéré, ajustez cette valeur en fonction des besoins de performances de votre application. Un nombre d'itérations plus élevé augmente la sécurité mais peut avoir un impact sur la vitesse de l'application.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!