我有一个简单的web应用程序,它有一个登录页面,前端域有一个带有的简单模型
string username {get;set;}
string password {get;set;}
然而,在发送到数据域对象之前,它是用sha256加密的,最初的数据域是:
string username {get;set;}
string password {get;set;}
所以我会从ui中获取密码,然后使用Encoding对其进行加密。GetString()方法,返回一个用于持久化的字符串。然而,当我试图持久化数据时,它似乎只是给出了一个异常,我认为这是因为字符串中的字符无效。
经过仔细查看,一些人建议将其存储为varbinary(32),并在数据层中使用byte[]密码{get;set;},但我无法让Nhibernate正确映射它。
因此,有人能告诉我使用Nhibernate和SqlServer或MySql存储哈希密码的最佳实践吗。(该应用程序同时支持两个dbs)
您不应该在SHA值上使用Encoding.GetString()
,因为它会生成可能无法正确存储的文本,或者更糟的是,会出现异常。更应该使用类似Convert.ToBase64String
的东西。