C# 在数据库中存储密码的FIPS验证算法?

C# 在数据库中存储密码的FIPS验证算法?,c#,asp.net,fips,C#,Asp.net,Fips,我正在寻找一个FIPS验证的哈希算法来存储数据库中的密码。 我确实使用了下面的代码,但仍然得到了错误 此实现不是Windows平台FIPS验证的加密算法的一部分 SHA1CryptoServiceProvider Testsha1=新的SHA1CryptoServiceProvider(); 字节[]哈希字节; UTF8Encoding编码器=新的UTF8Encoding(); hashed=Testsha1.ComputeHash(encoder.GetBytes(strPassword));

我正在寻找一个FIPS验证的哈希算法来存储数据库中的密码。 我确实使用了下面的代码,但仍然得到了错误

此实现不是Windows平台FIPS验证的加密算法的一部分

SHA1CryptoServiceProvider Testsha1=新的SHA1CryptoServiceProvider();
字节[]哈希字节;
UTF8Encoding编码器=新的UTF8Encoding();
hashed=Testsha1.ComputeHash(encoder.GetBytes(strPassword));
StringBuilder sb=新的StringBuilder();
for(int i=0;i
普通SHA-1不应用于存储密码。PBKDF2是一个不错的选择。在.net中,您可以将其与
Rfc2898DeriveBytes
类一起使用。看


您可能需要将基础哈希函数更改为SHA-256。据我所知,SHA-1未经NIST批准。

普通SHA-1不应用于存储密码。PBKDF2是一个不错的选择。在.net中,您可以将其与
Rfc2898DeriveBytes
类一起使用。看


您可能需要将基础哈希函数更改为SHA-256。据我所知,SHA-1未经NIST批准。

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


解决了我的问题

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

解决了我的问题

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

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

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

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

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


不要使用托管类-它们不是经过FIP验证的。相反,请使用
SHA256CryptoServiceProvider
和friends.

您在哪里看到该错误消息?@n8wrl该异常是由某些安全类引发的,如SHA1 Managed,当强制实施EnableFIPS安全策略时。我在尝试运行web应用程序时确实看到错误。@Macnique-发布的代码不应导致该异常-
SHA1CryptoServiceProvider
将使用Windows的CSP。请在堆栈跟踪中验证这一点,并将其发布到您的问题中。@vcsjones我正在使用SHA1,因为我读到它的FIPS兼容。它与IIS有关吗?您在哪里看到该错误消息?@n8wrl该异常是由某些安全类引发的,如SHA1 Managed,当强制实施EnableFIPS安全策略时。我在尝试运行web应用程序时确实看到错误。@Macnique-发布的代码不应导致该异常-
SHA1CryptoServiceProvider
将使用Windows的CSP。请在堆栈跟踪中验证这一点,并将其发布到您的问题中。@vcsjones我正在使用SHA1,因为我读到它符合FIPS。它与IIS有关吗?SHA1是NIST(FIPS Pub 180的一部分)可以接受的-如果Microsoft能够控制用于使用SHA256的HMAC算法,那就太好了。微软在CSP中的实现是。似乎在web.config的system.web部分添加了以下内容解决了我的问题。NIST(FIPS Pub 180的一部分)可以接受SHA1-如果微软能够控制用于使用SHA256的HMAC算法,那就太好了。Microsoft在CSP中的实现是。似乎在system.web部分的web.config中添加以下内容解决了我的问题
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();