Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[CAPICOM — это 32-разрядный компонент, доступный для использования в следующих операционных системах: Windows Server 2008, Windows Vista и Windows XP. Вместо этого используйте .NET Framework для реализации функций безопасности. Дополнительные сведения см. в разделе Альтернативы использованию CAPICOM.]
Чтобы расшифровать обернутое сообщение, получатель сопоставляет сертификат из хранилища My, который содержит доступный закрытый ключ, с сертификатом в обернутом сообщении. Если совпадение найдено, зашифрованный ключ, связанный с этим сертификатом, расшифровывается, и этот расшифрованный ключ используется для расшифровки конвертированного сообщения. Получатель сообщения, не имеющий соответствующий сертификат с доступным закрытым ключом, не может расшифровать сообщение.
В следующем примере имя файла передается в подпрограмму, открывается этот файл, и зашифрованное сообщение считывается. Затем обернутое сообщение расшифровывается. Шаги сопоставления сертификата пользователя с сертификатом в конвертированном сообщении, расшифровки ключа шифрования и, наконец, расшифровки сообщения выполняются в фоновом режиме. Ошибка возникает, если совпадение сертификата не найдено или если происходит ошибка расшифровки.
При любой ошибке 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