首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AJAX.NET和FIPS

AJAX.NET和FIPS
EN

Stack Overflow用户
提问于 2010-08-03 05:07:09
回答 2查看 735关注 0票数 3

我们的应用程序中有几个部分使用AJAX.NET 5.7.25.1。我们的服务器管理员已经启用了FIPS,我们遇到了以下错误:

此实现不是Windows平台FIPS验证的加密算法的一部分。

调用堆栈:

代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-26 03:01:16

最快的方法可能是直接修改AJAX.Net pro源代码,删除使用MD5算法的恶意调用。去Codeplex.获取你正在使用的AJax.NET pro版本的源代码。在AjaxPro/Utilities/MD5Helper.cs中:

替换这行...

代码语言:javascript
复制
MD5 md5 = new MD5CryptoServiceProvider();

用这条线..。

代码语言:javascript
复制
SHA1 md5 = new SHA1CryptoServiceProvider();

这应该可以解决这个问题。SHA1 is FIPS compliant per this page

在这种情况下。唯一使用的应用程序接口是ComputeHash()方法,这两个提供程序都实现了该方法。

只需切换加密提供程序,您就应该能够编译和使用代码,而不需要任何其他更改,也不需要任何恼人的FIPS策略冲突标志。

票数 1
EN

Stack Overflow用户

发布于 2010-08-20 23:19:21

在.NET中使用任何FIPS散列算法都被认为是不符合MD5的,因此这将始终导致该错误。我不确定AjaxRequestProcessor是否正在处理MD5,它可能是某种视图状态操作。将视图状态加密算法更改为使用3DES而不是MD5可能会有所帮助。

尝试将此密钥添加到web.config文件的system.web部分:

代码语言:javascript
复制
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

有关解决HERE的完整文章。

此外,当.NET使用MD5进行一些调试操作时,在您的can配置中仅将debug=设置为“true”就会导致此错误。您的web.config中是否存在debug="false“?

代码语言:javascript
复制
<system.web>
    <compilation debug="false">
</system.web>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3391759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档