首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CryptGenRandom和CNG BCryptGenRandom API的区别

CryptGenRandom和CNG BCryptGenRandom API的区别
EN

Stack Overflow用户
提问于 2016-05-18 05:04:45
回答 1查看 4K关注 0票数 6

我们的产品之一目前正在使用CryptGenRandom API来生成随机数。最近,我遇到了密码API:下一代(CNG),它提供了一个新的API BCryptGenRandom ( bcrypt.h)。根据MSDN中提供的描述,这两个API都符合Windows中带有Service 1 (SP1)和更高版本的NIST 800-90标准。

  1. 如果我使用默认的Microsoft提供程序,那么这两个API之间的随机数生成过程有什么不同吗?
  2. 如果没有任何不同,我是否应该转移到CNG,因为CNG是CryptoAPI的长期替代?
EN

回答 1

Stack Overflow用户

发布于 2016-12-16 00:07:12

关于第一个问题,正如您所指出的,每个MSDN,两个API都使用相同的伪随机数生成器算法。也许更重要的是要指出,两个API都使用相同的Windows内核熵源来为PRNG提供数据。

关于您的第二个问题,这是更有趣的,因为它提出了一个问题,主机是否有一个更高质量的RNG作为第三方附加(一个例子是硬件安全模块,HSM)。硬件RNG可以通过CNG (BCryptGenRandom)、遗留CAPI (Crypto,CryptGenRandom)和/或作为内核模式熵源公开。如果您的应用程序只在调用特定的RNG时才会受益,而不是两者兼而有之。但是,如果硬件RNG是作为内核熵源安装的,那么您的应用程序无论哪种方式都有好处。

这些是否重要更多的问题是你的应用程序的性质和它是如何使用的。如果密码硬件不太可能是部署故事的一部分,那么我看不出有什么理由改变您的代码。但是,如果您的产品和密码硬件往往出现在同一主机上,您的客户将受益于您点亮该功能。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37290697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档