System.Security.Cryptography.RandomNumberGenerator 是否使用 TPM 的 RNG?

Does System.Security.Cryptography.RandomNumberGenerator use the TPM's RNG?

如果 TPM 已安装并处于活动状态,System.Security.Cryptography.RandomNumberGenerator 是否使用 TPM 的 RNG?

RandomNumberGenerator class 只是一个抽象 class 创建了一种与随机数生成器交互(即编程)的标准方式。如果您想使用特定的随机数生成器 (RNG),例如来自 TPM 的随机数生成器,您将需要查阅文档 and/or TPM 附带的库。

如果 TPM 提供加密服务提供程序 (CSP),实例化 RNGCryptoServiceProvider with the a CspParameters 参数允许您指定要使用的 CSP(以及 TPM 提供的 RNG)。例如:

// Find in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider Types
int providerType; 
// Find in HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Defaults\Provider
string providerName;

CspParameters cspParameters = new CspParameters(providerType, providerName);
RNGCryptoServiceProvder = new RNGCryptoServiceProvider(cspParameters);