金鑰匯入和匯出

您可以使用 CNG 匯入和匯出 對稱金鑰 和非對稱金鑰。 您可以使用金鑰匯出和匯入功能,在機器之間移動金鑰。

對稱金鑰

若要匯入或匯出對稱 (或會話) 用來加密和解密某些資料的金鑰,您可以使用 BCryptImportKeyBCryptExportKey 函式。 一般而言,您必須先使用 BCryptExportKey 函式匯出金鑰,再使用 BCryptImportKey 函式匯入。 函式的設計目的是使用 hExportKeyhImportKey 參數來啟用匯出和匯入金鑰的加密;不過,這些函式的 Microsoft 實作不支援匯出和匯入金鑰的加密。

非對稱金鑰

若要匯入非對稱 (或 公用/私人) 金鑰組,其中一個金鑰用來加密,另一個金鑰用來解密某些資料,您可以使用 BCryptImportKeyPairNCryptImportKey 函式。 CNG 提供者必須使用支援的 金鑰 BLOB 類型來編碼金鑰組。 BCryptExportKey 可用來建立編碼金鑰 BLOB。 CNG 結構 描述 Microsoft 金鑰儲存體提供者支援的金鑰 BLOB 類型和結構。

若要讓 BCryptExportKey 建立保存的金鑰組,輸入金鑰 BLOB 必須包含 私密金鑰公開金鑰 不會保存。

金鑰名稱和匯出原則不是CNG 結構中所定義的BLOB結構的一部分。 不過,如果 BLOB 是不透明的 BLOB 類型, (例如內部金鑰狀態的記憶體映射) ,BLOB 可能會包含金鑰名稱和匯出原則屬性。

下列程式描述如何使用其屬性匯入保存的私密金鑰。

匯入保存的金鑰

  1. 使用 NCryptCreatePersistedKey 函式建立保存的金鑰。
  2. 使用 NCryptSetProperty 函式,在索引鍵物件上設定任何所需的屬性。
  3. 將匯入金鑰 BLOB 設定為金鑰上的屬性,並將 BLOB 類型設定為屬性名稱。
  4. 使用 NCryptFinalizeKey 函式完成保存的金鑰匯入。