Funktionsreferenz

_Crypt_DecryptFile

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

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

 

Parameter

$sSourceFile Datei die entschlüsselt werden soll
$sDestinationFile Pfad und Name der Ausgabedatei
$vCryptKey Passwort oder Handle zu einem Schlüssel, wenn der 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 entschlüsselt werden
5 - Das Stück konnte nicht entschlüsselt werden

 

Bemerkungen

Keine.

 

Verwandte Funktionen

_Crypt_EncryptFile, _Crypt_DeriveKey

 

Beispiel


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

$hWnd = GUICreate("Dateiverschlüsselung", 234, 178, 260, 238)
$InFileLabel = GUICtrlCreateLabel("Quelldatei", 8, 0, 44, 17)
$InFileInput = GUICtrlCreateInput("", 8, 16, 169, 21)
$OutFileLabel = GUICtrlCreateLabel("Zieldatei", 8, 48, 52, 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, 53, 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("Datei 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("Input File", "", "All files (*.*;)")
            If $file <> "" Then GUICtrlSetData($InFileInput, $file)
        Case $OutFileButton
            $file = FileSaveDialog("Output file", "", "Any file (*.*;)")
            If $file <> "" Then GUICtrlSetData($OutFileInput, $file)

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

            $outfile=GUICtrlRead($OutFileInput)
            If $outfile="" Then
                MsgBox(16,"Error","Bitte eine Zieldatei angeben!")
                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, "Error", "Der Algorithmus ist auf diesem System leider nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_128
                Case "AES_192"
                    If @OSVersion = "WIN_2000" Then
                        MsgBox(16, "Error", "Der Algorithmus ist auf diesem System leider nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_192
                Case "AES_256"
                    If @OSVersion = "WIN_2000" Then
                        MsgBox(16, "Error", "Der Algorithmus ist auf diesem System leider nicht verfügbar!")
                        ContinueLoop
                    EndIf
                    $algo = $CALG_AES_256
            EndSwitch
            $password=GUICtrlRead($PasswordInput)
            If $password="" Then
                MsgBox(16,"Error","Bitte ein Passwort eingeben")
                ContinueLoop
            EndIf

            AdlibRegister("Update",333)
            $success=_Crypt_DecryptFile($infile,$outfile,$password,$algo)
            If $success Then
                MsgBox(0,"Erfolg","Vorgang abgeschlossen")
            Else
                Switch @error
                    Case 1
                        MsgBox(16,"Fehler","Der Schlüssel konnte nicht erstellt werden")
                    Case 2
                        MsgBox(16,"Fehler","Die Quelldatei konnte nicht geöffnet werden")
                    Case 3
                        MsgBox(16,"Fehler","Die Zieldatei konnte nicht geöffnet werden")
                    Case 4 or 5
                        MsgBox(16,"Fehler","Fehler bei der Verschlüsselung")
                EndSwitch
            EndIf

            AdlibUnRegister("Update")
            WinSetTitle($hWnd,"","Dateientschlüsselung")
    EndSwitch
WEnd

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

    $Increase+=1
EndFunc   ;==>Update