- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们的一个产品目前正在使用 CryptGenRandom用于生成随机数的 API。最近,我遇到了密码学 API:提供新 API 的下一代 (CNG) BCryptGenRandom (在 bcrypt.h 中)相同。根据 MSDN 中提供的描述 - 两种 API 均符合 Windows Vista Service Pack 1 (SP1) 及更高版本中的 NIST SP800-90 标准。
最佳答案
关于您的第一个问题,不,正如您指出的那样,根据 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/
我正在编写一个供我正在从事的项目内部使用的小型库,我是一名业余 Javascript 开发人员,所以请注意我的错误。 我写了一个小的 html 文件以及下面的 javascript,
我试图弄清楚 ECDiffieHellman 在 .Net 下是如何工作的。 我想知道,为什么 ECDiffieHellman 有两个看起来非常相似的实现。 Cng 代表 Cryptography N
我想用 C# 编写一个可以打开 KeePass 的程序1.x kdb 文件。我下载了源代码并尝试移植密码数据库读取功能。数据库内容已加密。加密 key 通过以下方式获得: 用户输入密码; 计算密码的
我有一组用于对称加密/解密的预定义明文 key 。这些 key 用于与连接到 PC 的硬件设备进行加密通信。我想使用 CNG key 存储提供程序来安全地存储这些 key 。加密和解密必须在 CNG
我正在尝试围绕 CNG 的 AES 实现 AES-OFB 包装器以进行对称加密。 我遇到了一个我无法理解的问题...我创建了一个 AES 算法句柄 (BCRYPT_AES_ALGORITHM) 并导入
我有兴趣尝试从数字签名中读取字段。我有调用 CryptQueryObject 的代码,然后是 CryptMsgGetParam 来获取一些字段,最后是 CertFindCertificateInSto
我正在使用 Microsoft CNG Cryptography API 并尝试创建自签名证书。 我们有使用 CertCreateSelfSignCertificate 的现有代码方法,结合NCryp
我是 CNG 新手。我正在玩 msdn 站点的基本程序。我修改了输入纯字符串并使用提供 aes cbc 加密输出的其他网站测试了输出。不幸的是只有上半场匹配,下半场不匹配。如果有人能指出错误所在,那就
我想导入一个使用 CngKey.Export(CngKeyBlobFormat.EccPrivateBlob) 导出的 key ,为 key 命名,并将其保存在 keystore 中。这应该很简单,但
多年来,我一直在尝试寻找如何通过任何方式从文件中导入 ECC key 。我曾尝试从 Windows 证书存储、.p12 文件和 PKCS#8 OpenSSL key 文件访问 ECC 证书,但均未成功
所以我想知道哈希算法的各种实现之间是否存在重大差异,以SHA系列算法为例。它们每个都有 3 个实现,1 个在托管代码中,2 个围绕不同的 native 加密 API 进行包装,但是使用它们之间有什么主
我使用以下 CNG API 序列成功生成了 RSA key : BCryptOpenAlgorithmProvider(.., BCRYPT_RSA_ALGORITHM, ...); BCryptGe
将现有的框架应用程序移植到核心,我们早已将 System.Security.Cryptography.SHA256 和 System.Security.Cryptography.SHA256Manag
我想在 Windows 上运行的 C++ 应用程序中实现数据加密和解密。我花了相当多的时间在网上浏览,我想我可能应该使用 Windows Cryptography API: Next Generati
我正在使用 Crypto API 的 CryptAcquireContext 函数 ( https://docs.microsoft.com/en-us/windows/desktop/api/Win
https://learn.microsoft.com/en-us/sql/relational-databases/security/encryption/extensible-key-manage
我需要使用 Windows 的 Cryptography API: Next Generation 验证消息的签名.我有消息、它的签名和 PEM 格式的公钥,以及展示所需行为的原型(prototype
我需要使用 Windows 加密 API 方法验证签名的 JAR 文件。我对加密和签名问题只有基本的了解。我也不熟悉那些加密 API(WinCrypt、Bcrypt、Ncrypt)。验证文件哈希不是问
我需要使用 Windows 的 Cryptography API: Next Generation 验证消息的签名.我有消息、它的签名和 PEM 格式的公钥,以及展示所需行为的原型(prototype
我需要使用 Windows 加密 API 方法验证签名的 JAR 文件。我对加密和签名问题只有基本的了解。我也不熟悉那些加密 API(WinCrypt、Bcrypt、Ncrypt)。验证文件哈希不是问
我是一名优秀的程序员,十分优秀!