1

在Win 2003 32位上,我成功導出PRIVATEKEYBLOB,調用了CryptExportKey(dwFlags = 0)。然後,我嘗試使用64位可執行文件在Win Server 2008 64位上導入密鑰塊,致電CryptImportKey的調用失敗,並返回NTE_BAD_DATACryptoAPI - 在不同版本的Windows之間導出/導入密鑰

在這兩種情況下,加密提供初始化爲調用

CryptAcquireContext(& hProv, szContainer,NULL,PROV_RSA_AES, CRYPT_MACHINE_KEYSET)

導出密碼/導入比賽。公鑰基於密碼的md5哈希的CryptDeriveKey,它們在純文本表示中相同。我不確定公鑰在兩個系統中是否相等。

系統的不同類型(Win 2003 32位vs Win 2008 64位)是預期的失敗原因,有沒有辦法讓這個工作起作用?

回答

0

由於猜測ATL的CCryptDerivedKey生成的公鑰在兩個系統上並不相同。 CCryptDerivedKey的默認設置在兩個版本的ATL庫中必須不同。

由於我可以訪問源服務器和目標服務器,我可以以一致的方式重新導出和導入密鑰 - 指定算法,密鑰大小和鹽的存在。

很高興知道CCryptDerivedKey :: Initialize方法在早期版本的ATL庫(Visual Studio 2005,我相信)中的確切設置。

相關問題