共用方式為


基底提供者金鑰 BLOB

基底提供者和擴充提供者使用相同的 索引鍵 BLOB

公鑰 BLOB

公鑰 BLOB,類型 PUBLICKEYBLOB,可用來將 公鑰儲存在 密碼編譯服務提供者 (CSP) 外部的公鑰。 基底提供者公鑰 BLOB 的格式如下。

PUBLICKEYSTRUC  publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];

下表描述每個公鑰元件。 所有值都以 格式。

描述
公鑰模數資料位於 RSAPUBKEY 結構之後。 此數據的大小會根據公鑰的大小而有所不同。 您可以藉由將 RSAPUBKEY bitlen 字段的值除以 8 來判斷位元組數目。
publickeystruc PUBLICKEYSTRUC 結構。
rsapubkey RSAPUBKEY 結構。 magic 成員必須設定為 0x31415352。 這個十六進位值是 RSA1 ASCII 編碼。

 

注意

公鑰 BLOB 不會加密。 它們包含純文字格式公鑰。

 

私鑰 BLOB

私鑰 BLOB,類型 PRIVATEKEYBLOB,可用來將 私鑰儲存在 CSP 外部。 基底提供者私鑰 BLOB 的格式如下。

PUBLICKEYSTRUC  publickeystruc;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];

下表描述私鑰 BLOB 元件。

注意

這些欄位會對應至 公鑰密碼編譯標準 (PKCS) #1 第 7.2 節中所述的欄位,但稍有差異。

 

描述
係數 係數。 這有一個數值 (q) mod p 的數值。
exponent1 指數 1. 這具有 d mod 的數值(p – 1)。
exponent2 指數 2. 這具有 d mod 的數值(q – 1)。
模數。 這具有 Prime1×Prime2 的值,通常稱為 n。
prime1 質數 1,通常稱為 p。
prime2 質數 2,通常稱為 q。
privateExponent 私人指數,通常稱為 d。
publickeystruc PUBLICKEYSTRUC 結構。
rsapubkey RSAPUBKEY 結構。 magic 成員必須設定為 0x32415352。 這個十六進位值是 RSA2 ASCII 編碼。

 

注意

私鑰 BLOB 不會加密。 它們以純文字形式包含私鑰。

 

呼叫 CryptExportKey時,開發人員可以選擇是否要加密密鑰。 如果 hExpKey 參數包含會話密鑰的有效句柄,則會加密 PRIVATEKEYBLOB。 除了 PUBLICKEYSTRUC 部分外的所有 BLOB 都會加密。

注意

加密演算法和加密金鑰參數不會與私鑰 BLOB 一起儲存。 應用程式必須管理和儲存此資訊。 如果針對 hExpKey 傳遞零,則會匯出私鑰而不加密。

 

謹慎

在沒有加密的情況下導出私鑰會很危險,因為它們隨後容易受到未經授權的實體的攔截和使用。

 

簡單金鑰 BLOB

簡單金鑰 BLOB、類型 SIMPLEBLOB,可用來在 CSP 外部儲存和傳輸會話密鑰。 基底提供者簡單金鑰 BLOB 一律使用 金鑰交換公鑰加密SIMPLEBLOBpbData 成員是下列格式的位元組序列。

PUBLICKEYSTRUC  publickeystruc;
ALG_ID algid;
BYTE encryptedkey[rsapubkey.bitlen/8];

下表描述 SIMPLEBLOBpbData 成員的每個元件。

描述
algid ALG_ID 結構,指定用來加密會話密鑰數據的加密演算法。 這通常具有 CALG_RSA_KEYX 值,這表示會話密鑰數據是使用 RSA 公鑰演演算法來加密的密鑰交換公鑰
encryptedkey BYTE 序列,表示以 PKCS #1 格式的加密會話密鑰數據,類型為 2 加密區塊。 如需此數據格式的相關信息,請參閱 RSA Data Security, Inc. 發佈的公鑰密碼編譯標準 (PKCS) #1。此數據的大小一律與公鑰的模數相同。 例如,Microsoft RSA 基底提供者所產生的公鑰長度可以是 512 位(64 個字節),因此加密的會話密鑰數據一律為 512 位(64 個字節)。
publickeystruc PUBLICKEYSTRUC 結構。