- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一组用于对称加密/解密的预定义明文 key 。这些 key 用于与连接到 PC 的硬件设备进行加密通信。我想使用 CNG key 存储提供程序来安全地存储这些 key 。加密和解密必须在 CNG 之外完成。我只需要一个安全的地方来存储和检索我预定义的明文 key 。最近几天我研究了 CNG 函数引用,但找不到任何方法将由名称标识的明文对称 key 导入/导出到 CNG key 容器中。
我知道 CryptoAPI 提供导入/导出 session key 的功能。但是这个旧 API 不提供持久( session ) key ,也无法在 key 容器中按名称选择/识别 key 。
非常感谢任何帮助。提前致谢。
最佳答案
恐怕您无法获得直接解决方案,因为 CNG key 存储提供商目前支持非对称 key 但不支持对称 key 。只有原始提供者支持对称 key 。
此模型适用于必须长期保护的非对称 key ,而对称 key 仅用于一个 session ,然后被丢弃。这些对称 key 可能源自非对称 key ,例如 Diffie-Hellman 或 ECDH。
您说您希望安全地存储 key ,但加密/解密是在 CNG 之外完成的。根据您要防御的威胁,这可能不是正确的方法。通常,如果您将 key 存储在 key 存储提供程序中,您希望在 key 存储提供程序内部完成加密操作,并且不希望 key 永远离开它(除非被另一个 key 加密),因为这会将 key Material 暴露给攻击者。
但是,如果您确定这是您想要的,一种选择是在您的 key 存储提供程序中生成一个 RSA key ,并使用它来加密和解密对称 key 。您可以将加密的对称 key blob 存储在其他地方,例如在文件系统中。
关于windows - 如何使用 CNG 处理明文 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739583/
我正在编写一个供我正在从事的项目内部使用的小型库,我是一名业余 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)。验证文件哈希不是问
我是一名优秀的程序员,十分优秀!