3

我们的应用程序有几个部分使用 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?

4

2 回答 2

1

在这里完成的最快方法可能是直接修改 AJAX.Net pro 源以删除使用 MD5 算法的违规调用。从 Codeplex 获取您正在使用的 AJax.NET pro 版本的源代码。在 AjaxPro/Utilities/MD5Helper.cs 中:

换线...

MD5 md5 = new MD5CryptoServiceProvider();

用线...

SHA1 md5 = new SHA1CryptoServiceProvider();

那应该解决它。 SHA1 符合本页的 FIPS

在这种情况下......唯一正在使用的 API 是 ComputeHash() 方法,这两个提供者都实现了......

只需切换加密提供程序,您就应该能够编译和使用代码,而无需进行任何其他更改,也无需任何烦人的 FIPS 策略违规标志。

于 2010-08-25T19:01:15.743 回答
1

在 .NET 中使用任何 MD5 哈希算法都被认为是非 FIPS 兼容的,因此这总是会给出该错误。我不确定 AjaxRequestProcessor 是否可能使用 MD5,它可能是某种视图状态操作。更改视图状态加密算法以使用 3DES 而不是 MD5 可能会有所帮助。

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

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps" validation="3DES" decryption="3DES"/>

关于解决方法的完整文章在这里

此外,仅在 webconfig 中使用 debug="true" 可能会导致出现此错误,因为 .NET 使用 MD5 进行某些调试操作。你的 web.config 中有 debug="false" 吗?

<system.web>
    <compilation debug="false">
</system.web>
于 2010-08-20T15:19:20.823 回答