Funktionsreferenz

_Crypt_EncryptFile

Verschlüsselt eine Datei mit einem angegebenen Schlüssel und Algorithmus

#Include <Crypt.au3>
_Crypt_EncryptFile($sSourceFile, $sDestinationFile, $vCryptKey, $iALG_ID)

 

Parameter

$sSourceFile Datei die verschlüsselt werden soll
$sDestinationFile Pfad und Name der Ausgabedatei
$vCryptKey Passwort oder Handle zu einem Schlüssel, wenn das CALG_USERKAY Flag angegeben ist.
$iALG_ID Der zu verwendende Algorithmus

 

Rückgabewert

Erfolg: True
Setzt @error auf 0
Fehler: Gibt -1 zurück und setzt @error:
1 - Schlüssel konnte nicht erstellt werden
2 - Quelldatei konnte nicht geöffnet werden
3 - Zieldatei konnte nicht geöffnet werden
4 - Das letzte Stück konnte nicht verschlüsselt werden
5 - Das Stück konnte nicht verschlüsselt werden

 

Bemerkungen

Die Zieldatei, könnte womöglich größer sein, als die Quelldatei, abhängig vom benutzen Algorithmus

 

Verwandte Funktionen

_Crypt_EncryptData, _Crypt_DecryptFile, _Crypt_DeriveKey

 

Beispiel


#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Crypt.au3>

$hWnd = GUICreate("Datei-Verschlüsseler", 234, 178, 260, 238)
$InFileLabel = GUICtrlCreateLabel("Quelldatei", 8, 0, 47, 17)
$InFileInput = GUICtrlCreateInput("", 8, 16, 169, 21)
$OutFileLabel = GUICtrlCreateLabel("Ausgabedatei", 8, 48, 65, 17)
$OutFileInput = GUICtrlCreateInput("", 8, 64, 169, 21)
$InFileButton = GUICtrlCreateButton("...", 184, 16, 35, 20, $WS_GROUP)
$OutFileButton = GUICtrlCreateButton("...", 184, 64, 35, 20, $WS_GROUP)
$AlgoLabel = GUICtrlCreateLabel("Algorithmus", 8, 96, 55, 17)
$AlgoCombo = GUICtrlCreateCombo("RC4", 8, 112, 65, 25)
GUICtrlSetData(-1, "3DES|AES 128|AES 192|AES 256|DES|RC2")
$PasswordLabel = GUICtrlCreateLabel("Passwort", 88, 96, 50, 17)
$PasswordInput = GUICtrlCreateInput("", 88, 112, 129, 21)
$EncryptButton = GUICtrlCreateButton("Verschlüsseln", 8, 144, 211, 25, $WS_GROUP)
GUISetState(@SW_SHOW)

Global $Increase=0

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $InFileButton
            $file = FileOpenDialog("Quelldatei", "", "Alle Dateien (*.*;)")
            If $file <> "" Then GUICtrlSetData($InFileInput, $file)
        Case $OutFileButton
            $file = FileSaveDialog("Ausgabedatei", "", "Jede Datei (*.*;)")
            If $file <> "" Then GUICtrlSetData($OutFileInput, $file)

        Case $EncryptButton
            $infile = GUICtrlRead($InFileInput)
            If Not FileExists($infile) Then
                MsgBox(16, "Fehler", "Quelldatei existiert nicht!")
                ContinueLoop
            EndIf

            $outfile=GUICtrlRead($OutFileInput)
            If $outfile="" Then
                MsgBox(16,"Fehler","Bitte eine Datei für die Ausgabe festlegen")
                ContinueLoop
            EndIf

            $algo = 0
            Switch GUICtrlRead($AlgoCombo)
                Case "3DES"
                    $algo = $CALG_3DES
                Case "DES"
                    $algo = $CALG_DES
                Case "RC2"
                    $algo = $CALG_RC2
                Case "RC4"
                    $algo = $CALG_RC4
                Case "AES 128"
                    If @OSVersion = "WIN_2000" Then
                        MsgBox(16, "Fehler", "Dieser Algorithmus ist auf diesem System nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_128
                Case "AES 192"
                    If @OSVersion = "WIN_2000" Then
                        MsgBox(16, "Fehler", "Dieser Algorithmus ist auf diesem System nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_192
                Case "AES 256"
                    If @OSVersion = "WIN_2000" Then
                        MsgBox(16, "Fehler", "Dieser Algorithmus ist auf diesem System nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_256
            EndSwitch
            $password=GUICtrlRead($PasswordInput)
            If $password="" Then
                MsgBox(16,"Fehler","Bitte ein Passwort eingeben!")
                ContinueLoop
            EndIf

            AdlibRegister("Update",333)
            $success=_Crypt_EncryptFile($infile,$outfile,$password,$algo)
            If $success Then
                MsgBox(0,"Erfolg","Aufgabe erfolgreich beendet")
            Else
                Switch @error
                    Case 1
                        MsgBox(16,"Fehler","Fehler beim erstellen des Schlüssels")
                    Case 2
                        MsgBox(16,"Fehler","Konnte Quelldatei nicht öffnen")
                    Case 3
                        MsgBox(16,"Fehler","Konnte Ausgabedatei nicht öffnen")
                    Case 4 or 5
                        MsgBox(16,"Fehler","Fehler bei der Verschlüsselung")
                EndSwitch
            EndIf

            AdlibUnRegister("Update")
            WinSetTitle($hWnd,"","Datei Verschlüsseler")
    EndSwitch
WEnd

Func Update()
    Switch Mod($Increase,4)
        Case 0
            WinSetTitle($hWnd,"","Führe Aufgabe durch... |")
        Case 1
            WinSetTitle($hWnd,"","Führe Aufgabe durch... /")
        Case 2
            WinSetTitle($hWnd,"","Führe Aufgabe durch... —")
        Case 3
            WinSetTitle($hWnd,"","Führe Aufgabe durch... \")
    EndSwitch

    $Increase+=1
EndFunc   ;==>Update