1

我正在寻找一种经过 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();
4

3 回答 3

3

不应使用普通 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 批准。

于 2011-09-21T19:17:27.177 回答
2

在 system.web 部分下的 web.config 中添加以下行

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

解决了我的问题

于 2011-09-27T17:50:29.363 回答
0

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

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

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

于 2014-02-15T16:50:51.760 回答