6

我最近遇到了一个奇怪的问题RSACryptoServiceProvider.VerifyHash

我有一个使用它进行解密的 Web 应用程序。当运行 Web 服务的用户通过我们的 VPN 执行此操作时,它变得非常非常慢。当他们没有连接或互联网连接时,他们很好。

经过大量挖掘,我发现每次RSACryptoServiceProvider.VerifyHash调用它都会发出 LDAP 请求来检查MyMachineName\ASPNET

我们的 WebDev(基于 cassini 的)服务器不会发生这种情况,因为它们以当前用户身份运行,而且它只是在 VPN 上真的很慢,但根本不应该发生。

出于以下几个原因,这似乎是错误的:

  • 为什么要检查本地计算机用户的域控制器?
  • 为什么在乎?加密/解密无论如何都有效。

有谁知道为什么会发生这种情况或如何最好地解决它?

4

2 回答 2

7

从这个知识库看,它看起来像代码中需要排序的“皱纹”:

http://support.microsoft.com/kb/948080

于 2008-10-06T14:04:37.030 回答
1

谢谢(+1 & ans)

测试和工作。

来自知识库文章:

SignData 或 VerifyData 方法始终执行发送到域控制器的 OID 查找查询,即使应用程序在本地用户帐户中运行也是如此。这可能会导致签名或验证数据时速度变慢。DC 上发生登录失败审核事件,因为域无法识别客户端计算机的本地用户帐户。因此,OID 查找失败。

这正是我们所看到的。

我们改变了这一行:

rsa.VerifyHash( hashedData, CryptoConfig.MapNameToOID( "SHA1" ), signature );

对此:

rsa.VerifyHash( hashedData, null, signature );

这解决了它。

于 2008-10-06T14:25:32.963 回答