CAPICOM에서 메시지 암호 해독
[CAPICOM은 Windows Server 2008, Windows Vista 및 Windows XP 운영 체제에서 사용할 수 있는 32비트 전용 구성 요소입니다. 대신 .NET Framework 사용하여 보안 기능을 구현합니다. 자세한 내용은 CAPICOM 사용에 대한 대안을 참조하세요.]
이 서브루틴은 세션 암호화 키를 생성하는 데 사용할 암호 문자열과 암호화된 메시지를 읽을 파일의 이름을 사용합니다. 모든 매개 변수는 값으로 서브루틴에 전달됩니다.
참고
CAPICOM은 PKCS #7 EncryptedData 콘텐츠 형식을 지원하지 않지만 EncryptedData에 비표준 ASN 구조를 사용합니다. 따라서 CAPICOM만 CAPICOM EncryptedData 개체의 암호를 해독할 수 있습니다.
암호 해독에 실패하면 Err.Number 값이 확인되어 메시지를 암호화하는 데 사용된 암호와 일치하지 않는 암호를 사용하여 오류가 발생했는지 여부를 확인합니다. 이 경우 NTE_BAD_DATA 오류가 반환됩니다.
CAPICOM 오류에서 Err.Number 의 음수 10진수 값이 반환됩니다. 자세한 내용은 CAPICOM_ERROR_CODE 참조하세요. Err.Number의 양의 10진수 값에 대한 자세한 내용은 Winerror.h를 참조하세요.
Sub DecryptMessage(ByVal hidden As String, ByVal filename As String)
On Error goto ErrorHandler
'Declare an EncryptedData object
Dim message As New EncryptedData
'Declare a string variable to hold the encrypted message.
Dim encrypted As String
' Open an input file and read in the encrypted message
Open filename For Input As #1
Input #1, encrypted
Close #1
' If a message was read in (the length of the input string is
' greater than 0), set the password and decrypt the message.
If Len(encrypted) > 0 then
' Set the password used to generate the key
' used to decrypt the message. If the password
' not the same as the password used when the message
' was encrypted, decryption will fail.
' The algorithm name and key length set in the encrypting
' process are automatically used to decrypt the message.
message.SetSecret hidden
message.Decrypt encrypted
' Display the decrypted message.
MsgBox message.Content
else
msgbox "No encrypted message was read in.
endif
' Release the EncryptedData object and exit the subroutine.
Set message = Nothing
Exit Sub
ErrorHandler:
If Err.Number > 0 Then
MsgBox "Visual Basic error found:" & Err.Description
Else
' Check for a bad password error.
If Err.Number = -2146893819 Then
MsgBox "Error. The password may not be correct."
Else
MsgBox "CAPICOM error found : " & Err.Number
End If
End If
End Sub