Funktionreferenz


_Crypt_EncryptData

Beschreibung anzeigen in

Verschlüsselt Daten mit dem gegebenen Schlüssel

#include <Crypt.au3>
_Crypt_EncryptData ( $vData, $vCryptKey, $iAlgID [, $bFinal = True] )

Parameter

$vData Daten die verschlüsselt werden sollen. Siehe Bemerkungen.
$vCryptKey Passwort oder Handle zu einem Schlüssel, wenn das $CALG_USERKEY Flag angegeben ist.
$iAlgID Der zu verwendende Algorithmus. Siehe _Crypt_DeriveKey().
Zulässige Werte sind:
    $CALG_RC2
    $CALG_RC4
    $CALG_DES
    $CALG_3DES
    $CALG_AES_128
    $CALG_AES_192
    $CALG_AES_256
$bFinal [optional] False, wenn dies nur ein Teil der gesamten Daten ist.

Rückgabewert

Erfolg: einen binären String der die verschlüsselten Daten enthält
Fehler: -1 und setzt das @error Flag auf ungleich null
@error: 50 - Puffer konnte nicht bestimmt werden
60 - Daten konnten nicht verschlüsselt werden
10 bis 30 - Schlüssel konnte nicht erstellt werden
80 - Fehler beim abrufen von $CALG_USERKEY AlgID
1000+ _Crypt_Startup() fehlgeschlagen

Bemerkungen

Gibt einen Binär-String zurück, unabhängig von den eingegebenen Daten.

Wenn $vData Nicht-ANSI-Zeichen enthält, muss es als StringToBinary(..., $SB_UTF8) übergeben werden. Siehe Beispiel 3.

Verwandte Funktionen

_Crypt_DecryptData, _Crypt_DeriveKey, _Crypt_EncryptFile

Siehe auch

Suche nach CryptEncrypt in der MSDN Bibliothek.

Beispiel

Beispiel 1

#include <ComboConstants.au3>
#include <Crypt.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>
#include <WinAPIConv.au3>
#include <WindowsConstants.au3>

Global $g_hKey = -1, $g_idInputEdit = -1, $g_idOutputEdit = -1, $g_idOutputDeCrypted = -1

Example()

Func Example()
    Local $hGui = GUICreate("Echtzeit Ent- und Verschlüsselung", 400, 470)
    $g_idInputEdit = GUICtrlCreateEdit("", 0, 0, 400, 150, $ES_WANTRETURN)
    $g_idOutputEdit = GUICtrlCreateEdit("", 0, 150, 400, 150, $ES_READONLY)
    $g_idOutputDeCrypted = GUICtrlCreateEdit("", 0, 300, 400, 150, $ES_READONLY)
    Local $idCombo = GUICtrlCreateCombo("", 0, 450, 100, 20, $CBS_DROPDOWNLIST)
    GUICtrlSetData($idCombo, "3DES (168bit)|AES (128bit)|AES (192bit)|AES (256bit)|DES (56bit)|RC2 (128bit)|RC4 (128bit)", "RC4 (128bit)")
    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
    GUISetState(@SW_SHOW, $hGui)

    _Crypt_Startup() ; Startet die Crypt-Bibliothek um die Performance zu optimieren.

    Local $iAlgorithm = $CALG_RC4
    $g_hKey = _Crypt_DeriveKey(StringToBinary("CryptPassword"), $iAlgorithm) ; Deklariert eine Passwort-Zeichenkette und einen Algorithmus um einen kryptographischen Schlüssel zu erzeugen.

    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit

            Case $idCombo ; Prüft, wann die Combobox ausgewählt ist und ruft den richtigen Algorithmus ab.
                Switch GUICtrlRead($idCombo) ; Liest das ausgewählte Element der Combobox aus.
                    Case "3DES (168bit)"
                        $iAlgorithm = $CALG_3DES

                    Case "AES (128bit)"
                        $iAlgorithm = $CALG_AES_128

                    Case "AES (192bit)"
                        $iAlgorithm = $CALG_AES_192

                    Case "AES (256bit)"
                        $iAlgorithm = $CALG_AES_256

                    Case "DES (56bit)"
                        $iAlgorithm = $CALG_DES

                    Case "RC2 (128bit)"
                        $iAlgorithm = $CALG_RC2

                    Case "RC4 (128bit)"
                        $iAlgorithm = $CALG_RC4

                EndSwitch

                _Crypt_DestroyKey($g_hKey) ; Zerstört den kryptographischen Schlüssel.
                $g_hKey = _Crypt_DeriveKey(StringToBinary("CryptPassword"), $iAlgorithm) ; Deklariert wieder eine Passwort-Zeichenkette und einen Algorithmus um einen neuen kryptographischen Schlüssel zu erzeugen.

                Local $sRead = GUICtrlRead($g_idInputEdit)
                If StringStripWS($sRead, $STR_STRIPALL) <> "" Then ; Prüft, ob ein Text zum Verschlüssen vorhanden ist.
                    Local $dEncrypted = _Crypt_EncryptData($sRead, $g_hKey, $CALG_USERKEY) ; Verschlüsselt den Text mit dem neuen kryptographischen Schlüssel.
                    GUICtrlSetData($g_idOutputEdit, $dEncrypted) ; Gibt den verschlüsselten Text in dem Ausgabe-Editfeld aus.
                    Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $g_hKey, $CALG_USERKEY) ; Entschlüsselt den Text mit dem neuen kryptographischen Schlüssel.
                    GUICtrlSetData($g_idOutputDeCrypted, BinaryToString($dDecrypted)) ; Gibt den entschlüsselten Text in dem Ausgabe-Editfeld aus.

                EndIf
        EndSwitch
    WEnd

    GUIDelete($hGui) ; Löscht die vorherige GUI und alle Controls.
    _Crypt_DestroyKey($g_hKey) ; Zerstört den kryptographischen Schlüssel.
    _Crypt_Shutdown() ; Beendet die Crypt-Bibliothek.
EndFunc   ;==>Example

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

    Switch _WinAPI_LoWord($wParam)
        Case $g_idInputEdit
            Switch _WinAPI_HiWord($wParam)
                Case $EN_CHANGE
                    Local $dEncrypted = _Crypt_EncryptData(GUICtrlRead($g_idInputEdit), $g_hKey, $CALG_USERKEY) ; Verschlüsselt den Text mit dem kryptographischem Schlüssel.
                    GUICtrlSetData($g_idOutputEdit, $dEncrypted) ; Gibt den verschlüsselten Text in dem Ausgabe-Editfeld aus.
                    Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $g_hKey, $CALG_USERKEY) ; Entschlüsselt den Text mit dem kryptographischem Schlüssel.
                    GUICtrlSetData($g_idOutputDeCrypted, BinaryToString($dDecrypted)) ; Gibt den entschlüsselten Text in dem Ausgabe-Editfeld aus.

            EndSwitch
    EndSwitch
EndFunc   ;==>WM_COMMAND

Beispiel 2

#include <Crypt.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Encrypt text using a generic password.
    Local $dEncrypted = StringEncrypt(True, 'Encrypt this data.', 'securepassword')

    ; Display the encrypted text.
    MsgBox($MB_SYSTEMMODAL, 'Encrypted', $dEncrypted)

    ; Decrypt the encrypted text using the generic password.
    Local $sDecrypted = StringEncrypt(False, $dEncrypted, 'securepassword')

    ; Display the decrypted text.
    MsgBox($MB_SYSTEMMODAL, 'Decrypted', $sDecrypted)
EndFunc   ;==>Example

Func StringEncrypt($bEncrypt, $sData, $sPassword)
    _Crypt_Startup() ; Start the Crypt library.
    Local $vReturn = ''
    If $bEncrypt Then ; If the flag is set to True then encrypt, otherwise decrypt.
        $vReturn = _Crypt_EncryptData($sData, $sPassword, $CALG_RC4)
    Else
        $vReturn = BinaryToString(_Crypt_DecryptData($sData, $sPassword, $CALG_RC4))
    EndIf
    _Crypt_Shutdown() ; Shutdown the Crypt library.
    Return $vReturn
EndFunc   ;==>StringEncrypt

Example 3 for Handling non ANSI String

#include <Crypt.au3>
#include <MsgBoxConstants.au3>
#include <StringConstants.au3>

Local $sPlaintext = "Hello! ជំរាបសួរ! Allô! Привет! 您好!مرحبا! હેલો! שלום! こんにちは!"

Local $dPlaintextUTF8 = StringToBinary($sPlaintext, $SB_UTF8) ; Convert to Binary string converting Unicode char as UTF8
;~ $dPlaintextUTF8 = $sPlaintext ; If Uncommented willshow why UTF8 conversion is needed

Local $iAlgorithm = $CALG_3DES
Local $hKey = _Crypt_DeriveKey("CryptPassword", $iAlgorithm)

Local $dEncrypted = _Crypt_EncryptData($dPlaintextUTF8, $hKey, $CALG_USERKEY) ; Encrypt the text with the new cryptographic key.

Local $dDecrypted = _Crypt_DecryptData($dEncrypted, $hKey, $CALG_USERKEY) ; Decrypt the data using the generic password string. The return value is a binary string.

Local $sDecrypted = BinaryToString($dDecrypted, $SB_UTF8) ; Convert the binary string using BinaryToString to display the initial data we encrypted.

If $sPlaintext = $sDecrypted Then
    MsgBox($MB_SYSTEMMODAL, "Decrypted data", $sDecrypted)
Else
    MsgBox($MB_SYSTEMMODAL, "BAD Decrypted data", $sPlaintext & @CRLF & "-->" & @CRLF & $sDecrypted)
EndIf