2010-11-22 2 views
2

私は新しいアプリケーションを.Netで書いています。私はまた、VB6で書かれ、C++のDLLを利用している(その間に)維持されなければならないアプリケーションの旧バージョンを持っています。特定のC++ネイティブDLLは、引き続きP/Invokeを介して新しい.Netアプリケーションによって利用され、共有されなければなりません。.Net RNGCryptoServiceProviderクラスとWin32 CryptGenRandom()関数

現在のところ、従来のアプリケーションでは、乱数ジェネレータが使用されています。乱数ジェネレータは、Win32 APIで使用できるCryptGenRandom()関数を使用するために置き換えられます。新しい.Netアプリにも同じニーズがあり、RNGCryptoServiceProviderクラスを利用できます。

質問:ボンネットの下に ネットRNGCryptoServiceProviderクラスは、Win32 CryptGenRandom()関数を使用していますか?もしそうなら、私はこれに関する利用可能なドキュメントのリンクに興味があります。

答えて

2

実際には、.NET RNGCryptoServiceProviderクラスは「暗号化サービスプロバイダ」(CSP)からランダムなデータを取得します(つまりthe documentation)。 CryptoAPIでは、CSPはロード可能なDLLであり、主に秘密鍵の格納、署名の計算、乱数生成などの暗号化サービスを提供します。 CSPは、(マイクロソフトによって)署名され、(特定のレジストリキーを使用して)登録されている場合にのみ使用できます。

CryptGenRandom()関数はデフォルトのCSP(デフォルトで使用するように登録されているCSP、通常はオペレーティングシステム自体に付属のCSPの1つ)を使用し、そのCSPのCPGenRandom()関数を呼び出します。 RNGCryptoServiceProviderも同じです。したがって、ではありませんが、CryptGenRandom()と呼びますが、それは同じ暗号的に強力なソースを使用しています。

+1

'CryptGenRandom()'は、最初のパラメータ 'hProv'で指定されたCSPを使用します。 –

関連する問題