共用方式為


基底提供者金鑰 BLOB

基底提供者和擴充提供者使用相同的 金鑰 BLOB

公開金鑰 BLOB

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

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

下表描述每個公開金鑰元件。 所有值都是 以小到大 的格式。

欄位 Description
模數 公開金鑰模數資料會直接位於 RSAPUBKEY 結構之後。 此資料的大小會根據公開金鑰的大小而有所不同。 位元組數目可以藉由將 RSAPUBKEY bitlen 欄位的值除以八來決定。
publickeystruc PUBLICKEYSTRUC結構。
rsapubkey RSAPUBKEY結構。 magic成員必須設定為 0x31415352。 這個十六進位值是 RSA1 的 ASCII 編碼方式。

 

注意

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

 

私密金鑰 BLOB

私密金鑰 BLOB,輸入 PRI加值稅EKEYBLOB可用來將 私密金鑰 儲存在 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 元件。

注意

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

 

欄位 Description
係數 係數。 這具有 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參數包含工作階段金鑰的有效控制碼,則 PRI加值稅EKEYBLOB會加密。 除了 BLOB 的 PUBLICKEYSTRUC 部分,所有專案都會加密。

注意

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

 

警告

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

 

簡單金鑰 BLOB

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

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

下表描述SIMPLEBLOB之 pbData成員的每個元件。

欄位 Description
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結構。