6

最近、 で奇妙な問題に遭遇しましたRSACryptoServiceProvider.VerifyHash

復号化に使用する Web アプリケーションがあります。Web サービスを実行しているユーザーが VPN 経由で実行すると、非常に遅くなりました。接続がない場合やインターネット接続がない場合は、問題ありませんでした。

掘り下げた結果、 が呼び出されるたびRSACryptoServiceProvider.VerifyHashに、チェックする LDAP 要求が行われることがわかりましたMyMachineName\ASPNET

これは、現在のユーザーとして実行されている WebDev (cassini ベースの) サーバーでは発生せず、VPN 経由でのみ非常に遅くなりますが、まったく発生しないはずです.

これはいくつかの理由で間違っているようです:

  • ローカル マシン ユーザーのドメイン コントローラーをチェックするのはなぜですか?
  • なぜそれが気にするのですか?暗号化/復号化は関係なく機能します。

なぜこれが発生するのか、それを回避する最善の方法を知っている人はいますか?

4

2 に答える 2

7

この KB から、ソートが必要なコードの「しわ」のように見えます。

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

于 2008-10-06T14:04:37.030 に答える
1

ありがとうございます (+1 & ans)

テスト済みで動作します。

KB記事から:

SignData メソッドまたは VerifyData メソッドは、アプリケーションがローカル ユーザー アカウントで実行されている場合でも、ドメイン コントローラーに送信される OID ルックアップ クエリを常に実行します。これにより、データの署名または検証中に速度が低下する可能性があります。クライアント マシンのローカル ユーザー アカウントがドメインによって認識されないため、DC でログオン失敗の監査イベントが発生します。したがって、OID ルックアップは失敗します。

これはまさに私たちが見ていたものです。

この行を変更しました:

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

これに:

rsa.VerifyHash( hashedData, null, signature );

そして、それはそれを修正しました。

于 2008-10-06T14:25:32.963 に答える