我有一个简单的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)
答案 0 :(得分:0)
您不应在SHA值上使用Encoding.GetString()
,因为它会产生可能无法正确存储的文本,或者更糟糕的是,会产生异常。而是使用像Convert.ToBase64String
这样的东西。