如何在Visual Studio 2010和Windows 7中使用FIPS验证的加密算法?

时间:2011-02-17 20:54:22

标签: c# visual-studio-2010 encryption fips

我在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兼容算法。

3 个答案:

答案 0 :(得分:9)

This有一系列符合FIPS标准的算法。更完整的列表是here

  

符合FIPS的算法:

     

哈希算法

     

HMACSHA1

     

MACTripleDES

     

SHA1CryptoServiceProvider

     

对称算法(使用相同的密钥   加密和解密)

     

DESCryptoServiceProvider

     

TripleDESCryptoServiceProvider

     

非对称算法(使用公共   加密密钥和私钥   解密)

     

DSACryptoServiceProvider

     

的RSACryptoServiceProvider

因此,您需要使用SHA1CryptoServiceProviderTripleDESCryptoServiceProvider来符合FIPS

答案 1 :(得分:8)

尝试制作一个空白的C#应用​​程序并进行编译,它应该因为同样的原因而失败。最终问题是Visual Studio,而不是您的代码。关注instructions here并将其添加到IDE的配置文件(Devenv.exe.config / VCSExpress.exe.config / vbexpress.exe.config)中:

<enforceFIPSPolicy enabled="false"/>

这并不意味着您的应用程序未在FIPS兼容模式下运行,这意味着Visual Studio现在不是。不兼容的代码仍然会编译,但如果它尝试执行,您将收到System.InvalidOperationException异常。

我认为,但不确定,VS用于在库中生成某些哈希的算法实际上并不符合FIPS。

答案 2 :(得分:0)

  

您还可以尝试关闭IDE中的所有打开文件,然后构建。有人最近在Microsoft Connect上写了&gt;问题:connect.microsoft.com/VisualStudio/feedback/details/644602 / .... indiv

这对我来说也适用于Visual Studio 2010.在我的情况下,我必须关闭所有打开的文件并重启Visual Studio