共用方式為


RSA/安全通道金鑰 BLOB

BLOB 會與 RSA/通道 提供者搭配使用,以匯出密鑰,並將密鑰匯入至 密碼編譯服務提供者 (CSP)。

公鑰 BLOB

公鑰 BLOB,類型 PUBLICKEYBLOB,用來儲存 公鑰。 這些索引鍵會以下列格式匯出和匯入為位元組序列。

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

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

描述
BYTE 序列。 公鑰模數數據會直接位於 rsAPUBKEY 結構 之後。 此數據的長度會根據公鑰的長度而有所不同。 位元組數目可以藉由將 rsAPUB KEYbitlen 成員的值除以 8 來決定。
publickeystruc PUBLICKEYSTRUC 結構。
rsapubkey RSAPUBKEY 結構。 magic 成員必須設定為 0x31415352。 這個十六進位值是 RSA1 ASCII 編碼。

 

注意

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

 

私鑰 BLOB

私鑰 BLOB,輸入 PRIVATEKEYBLOB,可用來儲存公用/私鑰組。 這些索引鍵會以下列格式匯出和匯入為位元組序列。

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 已加密,則除了 BLOB PUBLICKEYSTRUC 部分外的所有專案都會加密。

注意

加密演算法和加密金鑰參數不會與私鑰 BLOB 一起儲存。 應用程式負責管理這項資訊。

 

下表描述每個私鑰 BLOB 元件。

注意

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

 

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

 

注意

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

 

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

注意

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

 

謹慎

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

 

簡單金鑰 BLOB

簡單金鑰 BLOB,類型 SIMPLEBLOB,可用來儲存和傳輸會話密鑰。 這些一律會使用 金鑰交換公鑰加密。 這些索引鍵會以下列格式匯出和匯入為位元組序列。

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

下表描述每個簡單的 BLOB 元件。

描述
algid ALG_ID 結構。 這通常會指定CALG_RSA_KEYX演算法,這表示會話密鑰數據是使用密鑰交換公鑰加密,RSA 公鑰演演算法
encryptedkey BYTE 序列。 加密的會話金鑰數據格式為 PKCS #1,類型 2 加密區塊。 如需此數據格式的相關信息,請參閱 RSA Data Security, Inc. 發佈的公鑰密碼編譯標準 (PKCS)。
publickeystruc PUBLICKEYSTRUC 結構。

 

此數據的大小一律與公鑰的模數相同。 例如,Microsoft基底密碼編譯提供者所產生的公鑰長度一律為 512 位(64 個字節),因此加密的會話密鑰數據一律為 64 個字節。