最近作的winform項目中,有個功能使用了MD5 加密,本地測試是沒有問題的,可是上線後有些用戶反饋說提示以下錯誤html
1、問題描述算法
中文版錯誤截圖windows
英語版錯誤截圖安全
具體錯誤信息:編輯器
有關調用實時(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 調試程序, 而不是由此對話框處理。
2、錯誤分析測試
FIPS是標準技術與標準國家協會爲聯邦計算機系統制定的標準和指南,用於描述文件處理、加密算法和其餘信息技術標準的標準。ui
不建議您啓用FIPS模式,除非您是政府機構或被強制使用該模式,若是您的設備勾選該模式可能會致使部分應用程序沒法正常使用。爲什麼要關閉「FIPS」模式,該加密協議僅適合政府機構或一些特定機構的計算機,若我的設備勾選FIPS模式,則強制本計算機使用通過FIPS驗證的加密協議,加密
啓用FIPS模式後全部的應用程序只能使用通過FIPS驗證的加密。大部分桌面應用程序採用的都是更快更安全的加密協議,部分應用的加密協議實際並無經過FIPS認證。恰巧我使用的MD5加密就沒有經過FIFS的認證。spa
3、解決方法3d
一、經過修改註冊表解決 FIPS不兼容MD5
「HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy" 的enable設置爲0 ,而後重啓軟件。
具體作法:
首先按住「Windows + R」鍵,彈出運行對話框,在運行對話框輸入「regedit」進入註冊表,點擊「肯定」
打開你須要的數值,鼠標右鍵該數值,點擊「修改」
二、第二種方法,修改本地策略
具體方法以下:
Win+R組合鍵打開「運行」窗口,輸入gpedit.msc命令打開本地組策略編輯器。
導航到組策略編輯器中的「計算機配置/Windows設置/安全設置/本地策略/安全選項」
點擊「安全選項」後在右側窗口中找到「系統加密:將FIPS兼容算法用於加密、哈希和簽名」設置,而後雙擊它,設置以下:
三、第三種方法 經過設置應用程序配置文件中<enforceFIPSPolicy>元素值爲false解決:
<configuration> <runtime> <enforceFIPSPolicy enabled="false"/> </runtime> </configuration>
四、第四個方法,改用FIFS認證的加密算法。。。。。
可能還有其餘更好的方法,以上方法並非每種方法都適用,也要視狀況而定。