2

使用 CryptoAPI,有没有办法解密(使用 CryptDecrypt)写入 SYMMETRICWRAPKEYBLOB 的密钥?在我的 c++ 程序中,我将一个对称密钥k1与另一个对称密钥k2包装到一个对称密钥 blob 中。我有第三个键k3,它等于k2但有不同的句柄。我的目标是用这个密钥解密 blob。我已经使用 SIMPLEBLOB 和公钥做到了。提前感谢您的关注。文档在这里

4

1 回答 1

4

正如您链接到的文档所述,用于 SYMMETRICWRAPKEYBLOB 的格式遵循RFC 3217。这是一种奇怪的格式,其中数据被加密,然后反转(最后一个字节成为第一个,依此类推),然后再次加密。两种加密都使用 CBC。如果您想手动完成,而不是使用CryptImportKey(),那么您将必须遵循 RFC 3217,两次调用CryptDecrypt(),并且您的代码还必须进行字节反转和其余的打包。

或者,使用 导入密钥 blob ,然后通过使用您自己的非对称CryptImportKey()(RSA) 密钥进行加密再次将其导出,然后您可以对其进行解密。在某些时候,微软自己记录说,为了“按原样”导出对称密钥,最好的方法是使用公共指数等于 1 的手工制作的 RSA 公钥进行调用,即不是真正正确的RSA 密钥 - - 有了这样一个公开的指数,RSA 加密基本上是无操作的。CryptExportKey()

于 2013-07-16T16:27:47.727 回答