2011-03-11 71 views
0

任何人都可以解釋爲什麼CryptImportKey函數接受0-5的hPubKey(解密密鑰句柄)?CryptImportKey CryptoAPI中接受的0 hPubKey導入加密的會話密鑰

的環境是這樣的:

PC#1:生成在本地密鑰容器中的密鑰交換密鑰對(公共/私有)(CryptGenKey瓦特/ AT_KEYEXCHANGE),則出口的公共部分作爲PUBLICKEYBLOB並將其發送給PC#2

PC#2:從PC#1注意到公共密鑰二進制大對象,並將其導入到本地密鑰容器。在同一本地密鑰容器中創建一個會話密鑰。出口本地密鑰容器會話密鑰到SIMPLEBLOB(CryptExportKey),使用從客戶端的密鑰團(這是用來加密會話密鑰)導入的公鑰。提供本地密鑰容器hProv,key-blob緩衝區指針和長度,hPubKey和flags的0(零),以及a指向HCRYPTKEY句柄的指針。

完成上述操作後,我得到一個有效的句柄,並且可以使用我回來的句柄調用CryptEncryptCryptDecrypt。是的,如果我在CryptImportKey上指定了從PC#1上面的第一步生成的密鑰交換密鑰對的句柄,那麼也可以。我只是不明白爲什麼hPubKey的值爲0,就好像CryptoAPI「知道」私鑰用於加密數據一樣。

謝謝。

回答

0

我能想到的唯一事情就是你在一個會話中使用它(它有上下文,因此知道私鑰),或者你實際上並沒有對數據進行加密。請注意,它實際上是可以查找使用模數作爲唯一的私鑰,但我無法理解,他們會用這樣的方法沒有告訴用戶。

PS對不起,我不能直接(還)評論你的問題,所以我張貼這一點,因爲很長一段時間框架。