C# 为什么RSACryptServiceProvider.VerifyHash需要LDAP检查?
我最近遇到了一个奇怪的问题 我有一个web应用程序使用它进行解密。当用户通过我们的VPN运行web服务时,速度变得非常慢。当他们没有连接或互联网连接时,他们很好 经过大量挖掘,我发现每次调用C# 为什么RSACryptServiceProvider.VerifyHash需要LDAP检查?,c#,.net,asp.net,encryption,rsacryptoserviceprovider,C#,.net,Asp.net,Encryption,Rsacryptoserviceprovider,我最近遇到了一个奇怪的问题 我有一个web应用程序使用它进行解密。当用户通过我们的VPN运行web服务时,速度变得非常慢。当他们没有连接或互联网连接时,他们很好 经过大量挖掘,我发现每次调用rsacyptoserviceprovider.VerifyHash,它都会发出LDAP请求,以检查MyMachineName\ASPNET 我们的WebDev(基于cassini的)服务器不会发生这种情况,因为它们是以当前用户的身份运行的,而且在VPN上的速度非常慢,但根本不应该发生这种情况 出于以下几个原
rsacyptoserviceprovider.VerifyHash
,它都会发出LDAP请求,以检查MyMachineName\ASPNET
我们的WebDev(基于cassini的)服务器不会发生这种情况,因为它们是以当前用户的身份运行的,而且在VPN上的速度非常慢,但根本不应该发生这种情况
出于以下几个原因,这似乎是错误的:
- 为什么要检查本地计算机用户的域控制器
- 它为什么在乎?不管怎样,加密/解密都可以工作
有人知道为什么会发生这种情况,或者如何最好地解决它吗?从这个知识库来看,代码中似乎有一个需要排序的“皱纹”: 谢谢(+1&ans) 测试和工作 从知识库文章: SignData或VerifyData方法 始终执行OID查找查询 它被发送到域 控制器,即使应用程序 正在本地用户帐户中运行。 这可能会导致签名时速度缓慢 或验证数据。登录失败 DC上发生审核事件,因为 客户端计算机的本地用户 帐户未被用户识别 域名。因此,OID查找 失败了 这正是我们所看到的 我们改变了这一行:
rsa.VerifyHash( hashedData, CryptoConfig.MapNameToOID( "SHA1" ), signature );
为此:
rsa.VerifyHash( hashedData, null, signature );
这就解决了问题。耶!我记得Tess(调试)或Mark(系统内部)博客上与类似问题相关的知识库,现在找不到典型的链接。