CryptoAPI包装的密钥
CryptoAPI wrapped keys
使用CryptoAPI,是否有一种方法可以解密(使用CryptDecrypt)写入SYMMETRICWRAPKEYBLOB的密钥?在我的c++程序中,我将一个对称密钥k1与另一个对称钥匙k2包装成一个对称的钥匙blob。我有第三个键,k3,等于k2但有一个不同的句柄。我的目标是用这个密钥解密blob。我已经使用SIMPLEBLOB和公钥完成了它。提前感谢您的关注。此处的文档
正如您链接到的文档所说,SYMMETRICWRAPKEYBLOB使用的格式遵循RFC 3217。这是一种奇怪的格式,数据被加密,然后反转(最后一个字节变为第一个,依此类推),然后再次加密。两种加密都使用CBC。如果你想手动完成,而不是使用CryptImportKey(),那么你必须遵循RFC 3217,对CryptDecrypt()
进行两次调用,你的代码还必须进行字节反转和其余的打包。
或者,使用CryptImportKey()
导入密钥blob,然后通过使用自己的非对称(RSA)密钥加密再次导出,然后可以对其进行解密。在某个时候,微软自己也在记录,为了导出对称密钥";"照原样";,最好的方法是用公共指数等于1的手工制作的RSA公钥调用CryptExportKey()
,即不是真正的正确的RSA密钥——有了这样的公共指数,RSA加密基本上是无操作的。
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 允许从 std::map 的密钥窃取资源?
- TMap::Emplace() 在应用现有密钥时会覆盖吗?
- 在没有密钥的情况下读取密文的剩余噪声预算
- 如何修复无效的API密钥,IP或操作权限错误?
- 所有可能的链接生成器与64位密钥
- 如何在unordered_map中更改密钥?
- 获取当前密钥状态?
- curl_easy_perform() 失败:SSL 对等证书或 SSH 远程密钥不正常
- 将密钥发送到非前台的游戏窗口
- 有哪些方法可以对基于 256 位密钥的矩阵进行加扰?
- 如何在精灵表上的两个不同部分之间来回切换,同时用户仍使用 SFML 持有密钥
- 如何将CNG密钥转换为OpenSSL EVP_PKEY(反之亦然)?
- 运行密钥密码解密知道密钥?
- std::unordered_map 运算符 [] 是否对非现有密钥进行零初始化?
- 封装 std::map 以允许迭代,但没有直接密钥访问?
- 如果我使用同一个密钥推送用户数据两次,会发生什么
- 如何在C++中创建自己的编译密钥
- 重载std::映射不同的密钥类型
- CryptoAPI包装的密钥