“PBKDF2算法被用于SimpleMembership提供程序(universalprovider)2.0中,是一种非FIPS Complaint算法。”“如果我理解正确,这里有三个问题。首先,您正在询问SimpleMembership的实现细节。其次,您正在询问PBKDF2是否获得了FIPS验证密码学的批准。第三,您正在询问SimpleMembership的PBKDF是否获得了批准。”“第一个问题”“我记得SimpleMembership使用了非标准的PBKDF。您应该在System.Security.Cryptography中使用Rfc2898DeriveBytes。”“一般来说,获得FIPS批准的算法和验证实现位于System.Security.Cryptography中,它们是非托管的。实际上,根据KB 811833,{{link1:“系统密码学:在Windows XP及更高版本中使用FIPS兼容算法进行加密、哈希和签名”安全设置影响}}:”Microsoft .NET Framework应用程序,例如Microsoft ASP.NET,仅允许使用经过NIST认证为FIPS 140合规的算法实现。具体来说,只能实例化实现FIPS合规算法的加密算法类。这些类的名称以“CryptoServiceProvider”或“Cng”结尾。任何尝试创建其他加密算法类的实例,例如名称以“Managed”结尾的类,都会导致InvalidOperationException异常发生。第二如果使用已批准的哈希,则可以使用PBKDF2。由于Rfc2898DeriveBytes使用HMAC/SHA-1,因此您将无法使用它。 NIST SP800-56和SP800-57对用于冲突抵抗的哈希选择非常明确。但是,您的用例略有不同- SHA-1被用作伪随机函数(PRF)。但我只知道一个例外情况,即在TLS中允许使用SHA-1作为PRF。该例外情况是SP800-108中的脚注(如我所记得的)。第三 SimpleMembership的PBKDF未获批准使用。