如何在Visual Studio 2010和Windows 7中使用FIPSvalidation的加密算法?
我在Windows 7中启用了FIPS兼容模式,但现在我的代码无法编译,并出现以下错误:
Source file 'whatever.cs' could not be opened ('This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms.')
我正在使用SHA1(散列)和TripleDes(加密)加密。 我也尝试过SHA512和AES(256位密钥)。
我不能让项目继续构建,但我需要编译它以使用FIPS兼容算法。
尝试制作一个空白的C#应用程序并进行编译,它应该因为同样的原因而失败。 最终问题是Visual Studio,而不是您的代码。 按照此处的说明将其添加到IDE的配置文件( Devenv.exe.config
/ VCSExpress.exe.config
/ vbexpress.exe.config
):
这并不意味着您的应用程序未在FIPS兼容模式下运行,这意味着Visual Studio现在不是。 不兼容的代码仍将编译,但如果它尝试执行,您将收到System.InvalidOperationException
exception。
我想,但不确定,VS用于在库中生成某些哈希值的算法实际上并不符合FIPS标准。
这有一个符合FIPS标准的算法列表。 这里有一个更完整的清单
符合FIPS标准的算法:
哈希算法
HMACSHA1
MACTripleDES
SHA1CryptoServiceProvider
对称算法(使用相同的密钥进行加密和解密)
DESCryptoServiceProvider
TripleDESCryptoServiceProvider
非对称算法(使用公钥进行加密,使用私钥进行解密)
DSACryptoServiceProvider
的RSACryptoServiceProvider
因此,您需要使用SHA1CryptoServiceProvider
和TripleDESCryptoServiceProvider
才能符合FIPS标准
您还可以尝试关闭IDE中的所有打开文件,然后构建。 有人最近在Microsoft Connect上写了>问题:connect.microsoft.com/VisualStudio/feedback/details/644602 / … – indiv
这对我来说也适用于Visual Studio 2010.在我的情况下,我必须关闭所有打开的文件,并重新启动Visual Studio