2011-06-14 39 views
1

我有了一個登錄頁面,一個簡單的Web應用程序貯藏SHA256散列密碼,前端域有一個簡單的模型:與NHibernate

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)

回答

0

你不應該在一個SHA值使用Encoding.GetString(),因爲它會產生可能不正確地存儲,或者更糟的是,給一個異常文本。而是使用像Convert.ToBase64String這樣的東西。

+0

我認爲,我想我上面提到它不存儲。因此,處理這些哈希的最佳做法是什麼? – somemvcperson 2011-06-14 12:45:31