我们的产品之一目前正在使用CryptGenRandom API来生成随机数。最近,我遇到了密码API:下一代(CNG),它提供了一个新的API BCryptGenRandom ( bcrypt.h)。根据MSDN中提供的描述,这两个API都符合Windows中带有Service 1 (SP1)和更高版本的NIST 800-90标准。
发布于 2016-12-16 00:07:12
关于第一个问题,正如您所指出的,每个MSDN,两个API都使用相同的伪随机数生成器算法。也许更重要的是要指出,两个API都使用相同的Windows内核熵源来为PRNG提供数据。
关于您的第二个问题,这是更有趣的,因为它提出了一个问题,主机是否有一个更高质量的RNG作为第三方附加(一个例子是硬件安全模块,HSM)。硬件RNG可以通过CNG (BCryptGenRandom)、遗留CAPI (Crypto,CryptGenRandom)和/或作为内核模式熵源公开。如果您的应用程序只在调用特定的RNG时才会受益,而不是两者兼而有之。但是,如果硬件RNG是作为内核熵源安装的,那么您的应用程序无论哪种方式都有好处。
这些是否重要更多的问题是你的应用程序的性质和它是如何使用的。如果密码硬件不太可能是部署故事的一部分,那么我看不出有什么理由改变您的代码。但是,如果您的产品和密码硬件往往出现在同一主机上,您的客户将受益于您点亮该功能。
https://stackoverflow.com/questions/37290697
复制相似问题