共用方式為


接收信封資料訊息

[CAPICOM 是 32 位的僅限元件,可用於下列作業系統:Windows Server 2008、Windows Vista 和 Windows XP。 請改用 .NET Framework 來實作安全性功能。 如需詳細資訊,請參閱 使用 CAPICOM 的替代方案。]

若要解密信封郵件,收件者會比對我的市集中具有可用私密金鑰的 憑證 ,且信封郵件中有憑證。 如果找到相符專案,則會解密與該憑證相關聯的加密金鑰,並使用解密的金鑰來解密信封的訊息。 沒有具有可用私密金鑰之相符憑證的郵件收件者無法解密訊息。

在下列範例中,檔案名會傳遞至副程式,該檔案會開啟,並讀取信封的訊息。 然後會解密信封郵件。 將使用者憑證與信封訊息中的憑證比對的步驟、解密加密金鑰,最後解密訊息的步驟全都會在幕後完成。 如果找不到憑證相符專案,或解密失敗,就會引發錯誤。

在任何 CAPICOM 錯誤上,會傳回 Err.Number 的負十進位值。 如需詳細資訊,請參閱 CAPICOM_ERROR_CODE。 如需 Err.Number的正十進位值相關資訊,請參閱 Winerror.h。

Sub ReceiveMessage(ByVal InFile As String)
On Error GoTo ErrorHandler

'Declare an EnvelopedData object

Dim Envmessage As New EnvelopedData

'Declare a string variable to hold the encrypted message.

Dim Encrypted As String

' Open an input file and read in the encrypted message
Open InFile For Input As #1
Input #1, Encrypted
Close #1

' If the length of the input string is greater than 0, 
' an encrypted message string is available. Decrypt the message.
' Note: to decrypt the message, a certificate with access to
' a user's private key must be available, and that certificate must
' match one of the certificates in the Recipients collection of 
' certificates.
If Len(Encrypted) > 0 Then
    ' Receive and decrypt the message
    Envmessage.Decrypt encrypted
    
    ' Display the decrypted message.
    MsgBox Envmessage.Content
Else
    MsgBox "No enveloped message was read in."
End If
' Release the EncryptedData object.
Set Envmessage = Nothing
Exit Sub

ErrorHandler:
If Err.Number > 0 Then
    MsgBox "Visual Basic error found:" & Err.Description
Else
    MsgBox "CAPICOM error found : " & Err.Number
End If
End Sub