2011-06-14 2 views
1

J'ai une application web simple qui a une page de connexion, le domaine frontal a un modèle simple:Stockage SHA256 mots de passe hachés avec NHibernate

string username {get;set;} 
string password {get;set;} 

Cependant, il est crypté avec SHA256 avant qu'il ne soit envoyé vers l'objet de domaine de données, à l'origine du domaine des données était:

string username {get;set;} 
string password {get;set;} 

alors je prendrais le mot de passe de l'interface, chiffrer puis en utilisant la méthode Encoding.GetString(), retourner une chaîne pour persister. Cependant quand j'essaye de persister les données il semble juste donner une exception, que je crois être en bas aux caractères dans la chaîne n'étant pas valide. Après avoir regardé autour, certaines personnes ont recommandé de le stocker comme varbinary (32) et d'utiliser un byte [] password {get; set;} dans la couche de données, mais je n'ai pas réussi à le mapper correctement.

Donc, quelqu'un peut-il me dire la meilleure pratique sur le stockage des mots de passe hachés avec Nhibernate et SqlServer ou MySql. (L'application prend en charge les deux dbs)

Répondre

0

Vous ne devez pas utiliser Encoding.GetString() sur une valeur SHA, car il produira du texte qui risque de ne pas être stocké correctement ou, pire, de provoquer une exception. Plutôt utiliser quelque chose comme Convert.ToBase64String.

+0

Je suppose que, comme je pense que je l'ai mentionné ci-dessus avec elle ne stocke pas. D'où la question de savoir quelle est la meilleure pratique pour faire face à ces hashs ... – somemvcperson

Questions connexes