2

我有一个用.Net 编写的新应用程序。我还有一个必须维护的应用程序的旧版本(同时),它是用 VB6 编写的并利用 C++ DLL。某些 C++ 本地 DLL 必须继续由新的 .Net 应用程序通过 P/Invoke 使用和共享。

旧版应用程序当前使用随机数生成器,它将被替换为使用通过 Win32 API 提供的 CryptGenRandom() 函数。新的 .Net 应用程序具有相同的需求,并且可以利用 RNGCryptoServiceProvider 类。

问题: .Net RNGCryptoServiceProvider 类在底层使用 Win32 CryptGenRandom() 函数吗?如果是这样,我会对与此相关的可用文档的任何链接感兴趣。

4

1 回答 1

2

实际上,.NetRNGCryptoServiceProvider类从“加密服务提供者”(CSP)获取随机数据(文档如是说)。在 CryptoAPI 中,CSP 是一个可加载的 DLL,它提供一些加密服务,主要是私钥存储、签名计算……以及随机数生成。只有当 CSP 已被(由 Microsoft)签名和注册(通过写入某些特定的注册表项)时,才能使用 CSP。

CryptGenRandom()函数使用默认 CSP(注册为默认使用的 CSP,通常是操作系统本身附带的 CSP 之一)并调用该CPGenRandom()CSP 上的函数。RNGCryptoServiceProvider做同样的事情。因此,它不调用CryptGenRandom()但它以相同的加密强源为食。

于 2010-11-24T22:14:22.623 回答