0
我正在爲Microsoft CryptoAPI編寫測試應用程序。我想使用第二方的公鑰導出一方的密鑰,然後導入該密鑰作爲第二方的密鑰(這爲通信建立了共享密鑰)。這裏是我的代碼:在CryptoAPI中導出密鑰時出現BAD_UID錯誤
if(!CryptExportKey(encryptT->hSymKey, decryptT->hPubKey, SIMPLEBLOB, 0, keyExBuf, &bufLen)) {
FormattedDebugPrint(NULL, GetLastError(), "could not export secret key", TRUE);
return -1;
}
if(!CryptImportKey(decryptT->hCryptProv, keyExBuf, bufLen, decryptT->hPubKey, 0, &(decryptT->hSymKey))) {
FormattedDebugPrint(NULL, GetLastError(), "could not import secret key", TRUE);
return -1;
}
這給出了錯誤:通過調用
80090001: Bad UID.
被兩個encryptT和decryptT(發件人,收件人)所生成的公開密鑰對:
CryptGenKey(encryptT->hCryptProv, CALG_RSA_KEYX, CRYPT_EXPORTABLE, &(encryptT->hPubKey))
任何想法可能導致錯誤?
謝謝,
你可以發佈更多的代碼與創建encryptT-> hSymKey和導入decryptT-> hPubKey?你是否從證書導入hPubKey?你的錯誤在這兩部分中。 – Oleg 2010-04-25 20:13:12
您好,感謝您的迴應!是的,我直接從發送方導入公鑰(「發件人」和「收件人」都在同一個應用程序中),而無需首先將公鑰導出到PUBLICKEYBLOB中,然後使用接收方的CSP導入公鑰。 – mindthief 2010-05-04 06:44:20