2011-03-07 5 views
5

J'utilise un SqlMembershipProvider et stocke mes mots de passe comme hachés. Je garde également un historique des mots de passe (hachés) dans une autre table. Je veux être capable de comparer le mot de passe auquel un utilisateur essaie de changer son mot de passe, à son ancien mot de passe et de lancer une erreur si elle était trop récente. Je ne semble pas être capable de comprendre comment utiliser les fonctions de hachage pour le faire. Fondamentalement ce que je cherche est une méthode comme ceci:Essayer de comparer l'historique des mots de passe aux mots de passe hachés créés par SqlMembershipProvider

public bool PasswordCompare(string plaintextPassword, string salt, string hashedPassword) 
{ 
    //where the salt and hashedPassword are pulled out of the aspnet_Membership table 
    //which are automatically generated by the provider 
} 

J'espère que c'est clair, merci.

+0

Pourquoi ne pas simplement un déclencheur sur la table aspnet_Membership qui écrit le UserId, mot de passe et la date et l'heure dans une autre table d'enregistrement que vous auriez alors une requête pour les cinq dernières? – Thomas

+0

@ Thomas est-vous suggestion de stocker des mots de passe en clair? –

+1

@Wyatt Barnett - Bien sûr que non. Vous pouvez stocker le hachage (et le sel) dans une table de journal et comparer le hachage courant et le sel à cette liste. – Thomas

Répondre

2

Ce message a de bonnes informations. On dirait que vous devez:

... mettre en œuvre votre propre personnalisé MembershipProvider, enregistrer l'historique des mots de passe et chiffrer le mot de passe par votre auto.

SQLMembershipProvider: Comparing Hashed Passwords

+0

Et le lien est mort .... – Stephen