現象:
在個別機器上,下列代碼會導致異常:
代碼 new System.Security.Cryptography.MD5CryptoServiceProvider().ComputeHash(bytes, offset, count); |
異常 System.InvalidOperationException: 此實現不是 Windows 平臺 FIPS 驗證的加密算法的一部分。 ...... |
根據錯誤信息在網上搜索了下,看到很多人都是說修改註冊表解決,但是原因卻不清楚。
註冊表修改“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled”值爲0就可以解決。
從.NET Framework 2.0開始,實現加密算法類的創建被受控於計算機的配置。 如果計算機配置爲算法需要符合 FIPS,並且類實現了一個與 FIPS 不兼容的算法,則任何創建該類的實例的嘗試將引發異常。 構造函數引發 InvalidOperationException 異常,Create 方法引發TargetInvocationException 異常和內部 InvalidOperationException 異常。 如果應用程序運行在其配置需要符合 FIPS 的計算機上,並且應用程序使用與 FIPS 不兼容的算法,則您可使用配置文件中的元素防止公共語言運行時 (CLR) 強制實施 FIPS 兼容性。 此元素在 .NET Framework 2.0 版 Service Pack 1 中引進。 |
<configuration> <runtime> <enforceFIPSPolicy enabled="false"/> </runtime> </configuration>