我们的应用程序中有几个部分使用AJAX.NET 5.7.25.1。我们的服务器管理员已经启用了FIPS,我们遇到了以下错误:
此实现不是Windows平台FIPS验证的加密算法的一部分。
调用堆栈:
at System.Security.Cryptography.MD5CryptoServiceProvider..ctor()
at MS.Utilities.MD5Helper.GetHash(Byte[] data)
at Ajax.AjaxRequestProcessor.Run()
at Ajax.AjaxHandler.ProcessRequest(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)新版本的AJAX.NET库是否兼容FIPS?
发布于 2010-08-26 03:01:16
最快的方法可能是直接修改AJAX.Net pro源代码,删除使用MD5算法的恶意调用。去Codeplex.获取你正在使用的AJax.NET pro版本的源代码。在AjaxPro/Utilities/MD5Helper.cs中:
替换这行...
MD5 md5 = new MD5CryptoServiceProvider();用这条线..。
SHA1 md5 = new SHA1CryptoServiceProvider();这应该可以解决这个问题。SHA1 is FIPS compliant per this page
在这种情况下。唯一使用的应用程序接口是ComputeHash()方法,这两个提供程序都实现了该方法。
只需切换加密提供程序,您就应该能够编译和使用代码,而不需要任何其他更改,也不需要任何恼人的FIPS策略冲突标志。
发布于 2010-08-20 23:19:21
在.NET中使用任何FIPS散列算法都被认为是不符合MD5的,因此这将始终导致该错误。我不确定AjaxRequestProcessor是否正在处理MD5,它可能是某种视图状态操作。将视图状态加密算法更改为使用3DES而不是MD5可能会有所帮助。
尝试将此密钥添加到web.config文件的system.web部分:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>有关解决HERE的完整文章。
此外,当.NET使用MD5进行一些调试操作时,在您的can配置中仅将debug=设置为“true”就会导致此错误。您的web.config中是否存在debug="false“?
<system.web>
<compilation debug="false">
</system.web>https://stackoverflow.com/questions/3391759
复制相似问题