다음을 통해 공유


CAPICOM에서 메시지 암호화

[CAPICOM은 Windows Server 2008, Windows Vista 및 Windows XP 운영 체제에서 사용할 수 있는 32비트 전용 구성 요소입니다. 대신 .NET Framework 사용하여 보안 기능을 구현합니다. 자세한 내용은 CAPICOM 사용에 대한 대안을 참조하세요.]

이 서브루틴은 암호화할 문자열, 암호화 키를 생성하는 데 사용할 암호 문자열 및 암호화된 메시지가 기록될 파일의 이름을 사용합니다. 모든 매개 변수는 값으로 서브루틴에 전달됩니다. 메시지의 암호를 해독하려면 동일한 암호 문자열을 사용해야 합니다. 암호가 손실되면 텍스트의 암호를 해독할 수 없습니다. 의도하지 않은 받는 사람이 암호에 대한 액세스 권한을 얻게 되면 메시지의 개인 정보가 손실됩니다.

참고

CAPICOM은 PKCS #7 EncryptedData 콘텐츠 형식을 지원하지 않지만 EncryptedData에 대해 비표준 ASN 구조를 사용합니다. 따라서 CAPICOM만 CAPICOM EncryptedData 개체의 암호를 해독할 수 있습니다.

 

CAPICOM 오류에서 Err.Number 속성의 음수 10진수 값이 반환됩니다. 자세한 내용은 CAPICOM_ERROR_CODE 참조하세요. Err.Number의 10진수 양수 값에 대한 자세한 내용은 Winerror.h를 참조하세요.

Sub EncryptMessage(ByVal TobeEncrypted As String, ByVal hidden _
    As String, ByVal filename As String)

    On Error GoTo ErrorHandler

    ' Declare and initialize an EncryptedData object.
    ' Algorithm.Name and KeyLength do not need to be set.

    Dim message As New EncryptedData
    message.Content = Tobeencrypted
    message.SetSecret(hidden)
    ' Optionally, the encryption algorithm and key length can be set.
    ' If these properties are not set, the default algorithm and key 
    ' length are used.
    ' Information about the algorithm and key length is saved with 
    ' the encrypted string and the individual decrypting the message
    ' does not need to set these properties.

    message.Algorithm.Name = CAPICOM_ENCRYPTION_ALGORITHM_DES

    ' Declare the string that will hold the encrypted message.

    Dim encryptedmessage As String

    ' Encrypt the message storing the result in the encryptedmessage
    ' string.
    encryptedmessage = message.Encrypt

    ' Optionally, check the length of the encrypted string to 
    ' make sure that the encrypt method worked. 

    If Len(encryptedmessage) < 1 Then
        MsgBox("no message encrypted. ")
    Else
        MsgBox(" Message is " & Len(encryptedmessage) & " characters")

        ' Open an output file and write the encrypted message to the
        ' file. The file is not opened if there is no message
        ' to write.
    Open filename For Output As #1
    Write #1, encryptedmessage
    Close #1
        MsgBox("Encrypted message written to file ")
    End If

    ' Release the EncryptedData object.
    message = 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