Contexte
Vous n'avez jamais ... vraiment ... besoin de connaître le mot de passe de l'utilisateur. Vous voulez simplement vérifier qu'un utilisateur entrant connaît le mot de passe d'un compte.
Hash It:
Stockez les mots de passe des utilisateurs hachés (cryptage unidirectionnel) via une fonction de hachage puissante. Une recherche de "c # encrypt passwords" donne une multitude d'exemples.
Voir le créateur de hachage SHA1 en ligne pour une idée de ce que produit une fonction de hachage (mais n'utilisez pas SHA1 comme fonction de hachage, utilisez quelque chose de plus fort tel que SHA256).
Maintenant, un mot de passe haché signifie que vous (et les voleurs de base de données) ne devriez pas être en mesure de rétablir ce hachage dans le mot de passe d'origine.
Comment l'utiliser:
Mais, dites-vous, comment puis-je utiliser ce mot de passe en purée stocké dans la base de données?
Lorsque l'utilisateur se connecte, il vous remet le nom d'utilisateur et le mot de passe (dans son texte d'origine) Vous utilisez simplement le même code de hachage pour hacher ce mot de passe tapé pour obtenir la version stockée.
Donc, comparez les deux mots de passe hachés (hachage de la base de données pour le nom d'utilisateur et le mot de passe tapé et haché). Vous pouvez savoir si "ce qu'ils ont tapé" correspondait "à ce que l'utilisateur d'origine a entré pour son mot de passe" en comparant leurs hachages.
Crédit supplémentaire:
Question: Si j'avais votre base de données, ne pourrais-je pas simplement prendre un pirate comme John the Ripper et commencer à créer des hachages jusqu'à ce que je trouve des correspondances avec vos mots de passe stockés et hachés? (puisque les utilisateurs choisissent de toute façon des mots de dictionnaire courts ... ça devrait être facile)
Réponse: Oui ... oui, ils le peuvent.
Donc, vous devez «saler» vos mots de passe. Voir l'article Wikipedia sur le sel
Voir l'exemple "Comment hacher des données avec du sel" C #