gpt4 book ai didi

c++ - CryptGenRandom 和 CNG BCryptGenRandom API 之间的区别

转载 作者:可可西里 更新时间:2023-11-01 14:23:16 27 4
gpt4 key购买 nike

我们的一个产品目前正在使用 CryptGenRandom用于生成随机数的 API。最近,我遇到了密码学 API:提供新 API 的下一代 (CNG) BCryptGenRandom (在 bcrypt.h 中)相同。根据 MSDN 中提供的描述 - 两种 API 均符合 Windows Vista Service Pack 1 (SP1) 及更高版本中的 NIST SP800-90 标准。

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

最佳答案

关于您的第一个问题,不,正如您指出的那样,根据 MSDN,两个 API 使用相同的伪随机数生成器算法。可能更相关的是指出这两个 API 使用相同的 Windows 内核熵源来提供 PRNG。

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

这是否重要取决于您的应用的性质及其通常的使用方式。如果加密硬件不太可能成为部署故事的一部分,那么我认为没有理由更改您的代码。但是,如果您的产品和加密硬件倾向于出现在同一台主机上,您的客户将从您点亮该功能中受益。

关于c++ - CryptGenRandom 和 CNG BCryptGenRandom API 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com