FIPS验证算法将密码存储在数据库中?

时间:2011-09-21 19:08:21

标签: c# asp.net 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();

3 个答案:

答案 0 :(得分: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批准。

答案 1 :(得分:2)

在system.web部分

下的web.config中添加以下行

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

解决了我的问题

答案 2 :(得分:0)

  

我正在寻找一种FIPS验证的哈希算法来将密码存储在数据库中。

使用SHA-2系列中的一个哈希值。例如,SHA256。

不要使用托管类 - 它们不经过FIPS验证。相反,请使用SHA256CryptoServiceProvider和朋友。