2011-09-21 33 views
1

我正在尋找FIPS驗證的哈希算法來將密碼存儲在數據庫中。 我確實使用了下面的代碼,但我仍然得到錯誤FIPS驗證算法將密碼存儲在數據庫中?

此實現不是Windows平臺FIPS驗證的加密算法的一部分。

SHA1CryptoServiceProvider Testsha1 = new SHA1CryptoServiceProvider(); 
byte[] hashedBytes; 
UTF8Encoding encoder = new UTF8Encoding(); 
hashed = Testsha1.ComputeHash(encoder.GetBytes(strPassword)); 
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < hashed.Length; i++) 
{ 
    sbuilder.Append(hashed[i].ToString("x2")); 
} 
string Password = sb.ToString(); 
+0

您究竟在哪裏看到錯誤信息? – n8wrl

+0

@ n8wrl在執行EnableFIPS安全策略時,某些安全類(如SHA1Managed)拋出異常。 – vcsjones

+0

我嘗試運行我的web應用程序時看到錯誤。 – Macnique

回答

2

添加web.config中的以下行下的System.Web部分

<machineKey validationKey="AutoGenerate,IsolateApps" ecryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

解決我的問題

2

平原SHA-1不應該被用來存儲密碼。 PBKDF2是一個不錯的選擇。在.net中,您可以將它與Rfc2898DeriveBytes類一起使用。請參閱https://security.stackexchange.com/questions/2131/reference-implementation-of-c-password-hashing-and-verification/2136#2136

您可能需要將基礎散列函數更改爲SHA-256。從我記得的SHA-1不是NIST批准的。

+2

SHA1 is NIST(FIPS Pub 180的一部分)可以接受 - 如果微軟對用於SHA256的HMAC算法進行了控制,那將會很不錯。微軟在CSP中的實施是[140-2批准](http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/1401val2004.htm#405)。 – vcsjones

+0

它看起來像在system.web節web.config中添加以下內容解決了我的問題 – Macnique

0

我在尋找有效的哈希算法計算FIPS存儲密碼的數據庫。

使用SHA-2家族中的一個哈希。例如,SHA256。

請勿使用託管類 - 它們未經FIPS驗證。相反,使用SHA256CryptoServiceProvider和朋友。

相關問題