使用Nhibernate存储Sha256哈希密码

时间:2011-06-14 10:05:05

标签: asp.net-mvc nhibernate passwords hash

我有一个简单的Web应用程序,它有一个登录页面,前端域有一个简单的模型:

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

然而,在将sha256发送到数据域对象之前,它已使用sha256加密,最初的数据域是:

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

所以我会从ui获取密码,然后使用Encoding.GetString()方法对其进行加密,返回一个字符串以进行持久化。但是,当我尝试保留数据时,它似乎只是给出了一个异常,我认为这是因为字符串中的字符无效。

在环顾四周之后,有些人建议将其存储为varbinary(32)并在数据层中使用byte []密码{get; set;},但是我无法让Nhibernate正确映射它。

所以任何人都可以告诉我使用Nhibernate和SqlServer或MySql存储散列密码的最佳实践。 (该应用程序支持两个dbs)

1 个答案:

答案 0 :(得分:0)

您不应在SHA值上使用Encoding.GetString(),因为它会产生可能无法正确存储的文本,或者更糟糕的是,会产生异常。而是使用像Convert.ToBase64String这样的东西。