Hashage sécurisé des mots de passe : le guide complet
Le stockage sécurisé des mots de passe est essentiel au maintien de la confidentialité et de la sécurité des utilisateurs. Même si le chiffrement peut sembler une solution simple, ce n’est pas la méthode idéale à cette fin. Le hachage, en revanche, est la méthode privilégiée pour stocker les mots de passe en toute sécurité.
Processus de hachage de mot de passe étape par étape
Étape 1 : Générer la valeur du sel
Tout d'abord, créez un sel aléatoire (valeur unique) à l'aide d'un générateur de nombres pseudo-aléatoires (PRNG) cryptographiquement sécurisé :
byte[] salt; new RNGCryptoServiceProvider().GetBytes(salt = new byte[16]);
Étape 2 : Hacher le mot de passe
Ensuite, initialisez l'algorithme PBKDF2 (Password-Based Key Derivation Function 2) :
var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);
Étape 3 : Mélanger le sel et le hachis
Combinez les octets de sel et de hachage de mot de passe pour une utilisation ultérieure :
byte[] hashBytes = new byte[36]; Array.Copy(salt, 0, hashBytes, 0, 16); Array.Copy(hash, 0, hashBytes, 16, 20);
Étape 4 : Encoder pour le stockage
Convertissez la valeur combinée du sel et du hachage en une chaîne Base64 pour un stockage en toute sécurité :
string savedPasswordHash = Convert.ToBase64String(hashBytes);
Étape 5 : Vérifier le mot de passe
Pour vérifier le mot de passe saisi par l'utilisateur par rapport au hachage stocké, récupérez le hachage stocké :
/* 获取存储的值 */ string savedPasswordHash = DBContext.GetUser(u => u.UserName == user).Password;
Extraire les octets et le sel :
/* 提取字节 */ byte[] hashBytes = Convert.FromBase64String(savedPasswordHash); /* 获取盐值 */ byte[] salt = new byte[16]; Array.Copy(hashBytes, 0, salt, 0, 16);
Calculez la valeur de hachage du mot de passe saisi par l'utilisateur :
var pbkdf2 = new Rfc2898DeriveBytes(password, salt, 100000); byte[] hash = pbkdf2.GetBytes(20);
Résultats de comparaison :
/* 比较结果 */ for (int i=0; i < 20; i++) if (hashBytes[i+16] != hash[i]) throw new UnauthorizedAccessException();
En suivant ces étapes, vous pouvez hacher les mots de passe de vos applications de manière efficace et sécurisée.
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!