Question

J'écris un membre personnaliséProvider.Bien sûr, je souhaite crypter le mot de passe que l'utilisateur crée.Je présume que .NET a quelque chose qui crypte les mots de passe.Qu'est-ce que c'est et comment puis-je l'utiliser?Quelle taille de chaîne cette sortie est-elle?J'ai déjà écrit les fournisseurs d'adhésion, mais il ne s'agissait que de vérifier que l'utilisateur est valide.C'est la première fois que je dois ajouter l'enregistrement et la connexion à l'utilisateur.

Je suis sûr que je n'utilise pas les bons termes de recherche, mais Google ne m'a rien montré de valeur pour moi.

Était-ce utile?

La solution

Tout d'abord, vous ne devriez pas crypter les mots de passe.Vous devriez hadry eux (il y a un débat sur ce sujet à jamais).

Pour les mots de passe de hachage, vous pouvez utiliser Hmacsha1 .Par exemple, lorsque vous créez l'utilisateur et avant de stocker le mot de passe:

HMACSHA1 hash = new HMACSHA1();
hash.Key = youKey; // you could use machine key
encodedPassword =  Convert.ToBase64String(hash.ComputeHash(Encoding.Unicode.GetBytes(password)));

puis stockez cette valeur dans la base de données. Vous pouvez ensuite comparer le mot de passe saisi en hachaillant et comparer les valeurs hachées.

Bien sûr, vous devez spécifier que le mot de passe est déposé dans le fichier de configuration:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
  <providers>
    <remove name="AspNetSqlProvider" />
    <add name="SqlProvider"
      type="System.Web.Security.SqlMembershipProvider"
      passwordFormat="Hashed"
      applicationName="/" />
  </providers>
</membership>

Consultez mon Publication du blog à ce sujet.Il y a un exemple avec des mots de passe hachés et cryptés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top