异常:System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms FIPS信息标准限值了MD5加密

最近做的winform项目中,有个功能使用了MD5 加密,本地测试是没有问题的,但是上线后有些用户反馈说提示如下错误

一、问题描述

中文版错误截图

英语版错误截图

具体错误信息:

有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.InvalidOperationException: 此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。
(以下隐藏了项目的信息) ************** 已加载的程序集 ************** mscorlib 程序集版本:4.0.0.0 Win32 版本:4.7.3324.0 built by: NET472REL1LAST_C 基本代码:file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll ---------------------------------------- HelloFont 程序集版本:2.2.0.1 Win32 版本:2.2.0.1 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/HelloFont.exe ---------------------------------------- System.Windows.Forms 程序集版本:4.0.0.0 Win32 版本:4.7.3324.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System 程序集版本:4.0.0.0 Win32 版本:4.7.3353.0 built by: NET472REL1LAST_B 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- System.Drawing 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- iHawkAppControl 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/iHawkAppControl.DLL ---------------------------------------- iHawkAppLibrary 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/iHawkAppLibrary.DLL ---------------------------------------- HanyiCloudEntity 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/HanyiCloudEntity.DLL ---------------------------------------- System.Net.Http 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Net.Http/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Net.Http.dll ---------------------------------------- System.Core 程序集版本:4.0.0.0 Win32 版本:4.7.3324.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ---------------------------------------- System.Configuration 程序集版本:4.0.0.0 Win32 版本:4.7.3324.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---------------------------------------- System.Xml 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll ---------------------------------------- Newtonsoft.Json 程序集版本:12.0.0.0 Win32 版本:12.0.2.23222 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/Newtonsoft.Json.DLL ---------------------------------------- System.Numerics 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll ---------------------------------------- System.Runtime.Serialization 程序集版本:4.0.0.0 Win32 版本:4.7.3324.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Serialization/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Serialization.dll ---------------------------------------- System.Data 程序集版本:4.0.0.0 Win32 版本:4.7.3260.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll ---------------------------------------- HanyiCloudClient 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/HanyiCloudClient.DLL ---------------------------------------- Gdu.WinFormUI 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/Gdu.WinFormUI.DLL ---------------------------------------- mscorlib.resources 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll ---------------------------------------- System.resources 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.resources.dll ---------------------------------------- iHawkWeChatLoginLibrary 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/iHawkWeChatLoginLibrary.DLL ---------------------------------------- System.Management 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Management/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Management.dll ---------------------------------------- Microsoft.mshtml 程序集版本:7.0.3300.0 Win32 版本:7.0.3300.0 基本代码:file:///C:/WINDOWS/assembly/GAC/Microsoft.mshtml/7.0.3300.0__b03f5f7f11d50a3a/Microsoft.mshtml.dll ---------------------------------------- iHawkFontLibrary 程序集版本:1.0.0.0 Win32 版本:1.0.0.0 基本代码:file:///D:/HyProject/GitHub/HelloFont/HanyiCloud/bin/Debug/iHawkFontLibrary.DLL ---------------------------------------- System.Windows.Forms.resources 程序集版本:4.0.0.0 Win32 版本:4.7.3190.0 built by: NET472REL1LAST_C 基本代码:file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.Windows.Forms.resources.dll ---------------------------------------- ************** JIT 调试 ************** 要启用实时(JIT)调试, 该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置 jitDebugging 值。 编译应用程序时还必须启用 调试。 例如: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> 启用 JIT 调试后,任何未经处理的异常 都将被发送到在此计算机上注册的 JIT 调试程序, 而不是由此对话框处理。

 

二、错误分析

   FIPS是标准技术与标准国家协会为联邦计算机系统制定的标准和指南,用于描述文件处理、加密算法和其他信息技术标准的标准。

  不建议您启用FIPS模式,除非您是政府机构或被强制使用该模式,如果您的设备勾选该模式可能会导致部分应用程序无法正常使用。为何要关闭“FIPS”模式,该加密协议仅适合政府机构或一些特定机构的计算机,若个人设备勾选FIPS模式,则强制本计算机使用经过FIPS验证的加密协议,

启用FIPS模式后所有的应用程序只能使用经过FIPS验证的加密。大部分桌面应用程序采用的都是更快更安全的加密协议,部分应用的加密协议实际并没有通过FIPS认证。恰巧我使用的MD5加密就没有通过FIFS的认证。

三、解决方法

1、通过修改注册表解决 FIPS不兼容MD5

  “HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsaFipsAlgorithmPolicy"  的enable设置为0 ,然后重启软件。

具体做法:

  首先按住“Windows + R”键,弹出运行对话框,在运行对话框输入“regedit”进入注册表,点击“确定”

           

  

  打开你需要的数值,鼠标右键该数值,点击“修改”

           

 2、第二种方法,修改本地策略

   具体方法如下:

  Win+R组合键打开“运行”窗口,输入gpedit.msc命令打开本地组策略编辑器。

       导航到组策略编辑器中的“计算机配置/Windows设置/安全设置/本地策略/安全选项”

       点击“安全选项”后在右侧窗口中找到“系统加密:将FIPS兼容算法用于加密、哈希和签名”设置,然后双击它,设置如下:

  

3、第三种方法  通过设置应用程序配置文件中<enforceFIPSPolicy>元素值为false解决:

<configuration>  
    <runtime>  
        <enforceFIPSPolicy enabled="false"/>  
    </runtime>  
</configuration>  

  

4、第四个方法,改用FIFS认证的加密算法。。。。。

可能还有其他更好的方法,以上方法并不是每种方法都适用,也要视情况而定。

原文地址:https://www.cnblogs.com/qtiger/p/10789040.html