共用方式為


EnvelopedCms 訊息

CMS/PKCS #7 提供 EnvelopedCms 類別,讓您為訊息加上數位封套。

為訊息加上數位封套時,可藉由套用稱為「資料機密性」的安全性服務,以保護訊息。

數位封套使用「加密」來強化訊息的機密性。它會產生「工作階段金鑰」,並使用該金鑰來加密訊息。接著,工作階段金鑰本身再使用收件者的公開金鑰將自己加密。加密之訊息與加密之工作階段金鑰的組合,即構成了數位封套。收到訊息之後,系統會使用收件者的私密金鑰將工作階段金鑰解密。接著,再使用工作階段金鑰將訊息解密。由於工作階段金鑰屬於「對稱金鑰」,因此可以同時用來加密和解密訊息。

如果應用程式對資料機密性有極高的要求,請使用 EnvelopedCms 類別。使用 S/MIME 安全性標準的電子郵件,即為使用 EnvelopedCms 類別來提供安全性的一個範例。除了其他安全性服務,S/MIME 還具備替數個收件者加密電子郵件訊息的能力。它會量身訂做數位封套,以符合這項需求。

請使用 EnvelopedCms 類別的其中一個 Encrypt 方法來加密訊息。System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipient) 方法要求應用程式必須先設定訊息收件者的特性,方式為建構一個 CmsRecipient 物件。CmsRecipient 類別存放了收件者的 X509 憑證,以及藉以在傳送者與收件者之間建立工作階段金鑰的技術。System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt 方法會顯示對話方塊,讓使用者選取適當收件者的憑證。

EnvelopedCms 類別支援替多位收件者的訊息加上封套的功能。在 CmsRecipientCollection 集合中設定收件者群組,做為 System.Security.Cryptography.Pkcs.EnvelopedCms.Encrypt(System.Security.Cryptography.Pkcs.CmsRecipientCollection) 方法的輸入。

有兩種技術可以在訊息的傳送者和收件者之間建立工作階段金鑰。「金鑰傳輸」演算法一般都使用 RSA (https://go.microsoft.com/fwlink/?LinkId=98038https://go.microsoft.com/fwlink/?LinkId=98038) 演算法,其中建立者會建立收件者的共用密碼編譯金鑰,方法是產生該金鑰,再將其傳輸給收件者。「金鑰合約」演算法一般使用 Diffie-Hellman 金鑰合約 (https://go.microsoft.com/fwlink/?LinkId=98039https://go.microsoft.com/fwlink/?LinkId=98039) 演算法。在此演算法中,雙方會藉由參與產生過程及同意該金鑰的方式,以建立共用密碼編譯金鑰。

System.Security.Cryptography.Pkcs.EnvelopedCms.RecipientInfos 屬性中有 EnvelopedCms 訊息之每位收件者的相關資訊。利用金鑰傳輸演算法的方式,與傳送者建立工作階段金鑰的收件者,其相關資訊可以在 KeyTransRecipientInfo 物件中找到。利用金鑰合約演算法的方式,與傳送者建立工作階段金鑰的收件者,其相關資訊可以在 KeyAgreeRecipientInfo 物件中找到。

EnvelopedCms 訊息可以包含未受保護的屬性。這是指未加密的屬性,它們沒有資料機密性。這些屬性都存放在 System.Security.Cryptography.Pkcs.EnvelopedCms.UnprotectedAttributes 屬性中。

請使用 EnvelopedCms 類別的其中一個 Decrypt 方法來解密已加上封套的訊息。EnvelopedCms 訊息中含有解密所需的收件者識別資訊。該資訊包含於 RecipientInfos 屬性中。

如需使用 EnvelopedCms 訊息的程式碼範例,請參閱使用 System.Security.Cryptography.Pkcs

請參閱

工作

HOW TO:封套單一收件者的訊息
HOW TO:封套多位收件者的訊息

參考

CmsRecipient
CmsRecipientCollection
EnvelopedCms
KeyAgreeRecipientInfo
KeyTransRecipientInfo

概念

HOW TO:簽署和封套訊息
CMS/PKCS #7 訊息的類型

Footer image

Copyright © 2007 by Microsoft Corporation. All rights reserved.