Maison > développement back-end > C++ > Comment puis-je hacher des mots de passe en toute sécurité à l'aide de PBKDF2 ?

Comment puis-je hacher des mots de passe en toute sécurité à l'aide de PBKDF2 ?

Mary-Kate Olsen
Libérer: 2025-01-23 12:22:09
original
737 Les gens l'ont consulté

How Can I Securely Hash Passwords Using PBKDF2?

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]);
Copier après la connexion

É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);
Copier après la connexion
Copier après la connexion

É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);
Copier après la connexion

É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);
Copier après la connexion

É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;
Copier après la connexion

Extraire les octets et le sel :

/* 提取字节 */
byte[] hashBytes = Convert.FromBase64String(savedPasswordHash);
/* 获取盐值 */
byte[] salt = new byte[16];
Array.Copy(hashBytes, 0, salt, 0, 16);
Copier après la connexion

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);
Copier après la connexion
Copier après la connexion

Résultats de comparaison :

/* 比较结果 */
for (int i=0; i < 20; i++)
    if (hashBytes[i+16] != hash[i])
        throw new UnauthorizedAccessException();
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal