UDF > Crypt >


_Crypt_DecryptFile

Déchiffre un fichier avec la clé et l'algorithme spécifiés

#include <Crypt.au3>
_Crypt_DecryptFile ( $sSourceFile, $sDestinationFile, $vCryptKey, $iAlgID )

Paramètres

$sSourceFile Fichier à traiter
$sDestinationFile Fichier où sera enregistré le fichier traité
$vCryptKey Mot de passe ou descripteur (handle)'d'une clé si l'indicateur CALG_USERKEY est spécifié
$iAlgID L'algorithme à utiliser. Voir _Crypt_DeriveKey().

Valeur de retour

Succès: Retourne True.
Échec: Retourne False et définit @error <> 0.
@error: 10+ - Impossible de créer la clé
2 - Impossible d'ouvrir le fichier source
3 - Impossible d'ouvrir le fichier de destination
400+ - Impossible de déchiffrer la partie finale
500+ - Impossible de déchiffrer la partie

En relation

_Crypt_DeriveKey, _Crypt_EncryptFile

Exemple

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

Example()

Func Example()
    Local $iAlgorithm = $CALG_RC4

    Local $hGUI = GUICreate("Déchiffreur de fichiers", 425, 100)
    Local $idSourceInput = GUICtrlCreateInput("", 5, 5, 200, 20)
    Local $idSourceBrowse = GUICtrlCreateButton("...", 210, 5, 35, 20)

    Local $idDestinationInput = GUICtrlCreateInput("", 5, 30, 200, 20)
    Local $idDestinationBrowse = GUICtrlCreateButton("...", 210, 30, 35, 20)

    GUICtrlCreateLabel("Mot de passe :", 5, 60, 200, 20)
    Local $idPasswordInput = GUICtrlCreateInput("", 5, 75, 200, 20)

    Local $idCombo = GUICtrlCreateCombo("", 210, 75, 100, 20, $CBS_DROPDOWNLIST)
    GUICtrlSetData($idCombo, "3DES (168bit)|AES (128bit)|AES (192bit)|AES (256bit)|DES (56bit)|RC2 (128bit)|RC4 (128bit)", "RC4 (128bit)")
    Local $idDecrypt = GUICtrlCreateButton("Déchiffrer", 355, 70, 65, 25)
    GUISetState(@SW_SHOW, $hGUI)

    Local $sDestinationRead = "", $sFilePath = "", $sPasswordRead = "", $sSourceRead = ""
    Local $iMsg

    Do
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $idSourceBrowse
                $sFilePath = FileOpenDialog("Sélectionner un fichier à déchiffrer.", "", "All files (*.*)") ; Sélectionne un fichier à déchiffrer.
                If @error Then
                    ContinueLoop
                EndIf
                GUICtrlSetData($idSourceInput, $sFilePath) ; Définit l'inputbox avec le chemin du fichier.

            Case $idDestinationBrowse
                $sFilePath = FileSaveDialog("Enregistrer le fichier sous...", "", "All files (*.*)") ; Sélectionner un fichier pour enregistrer les données déchiffrées.
                If @error Then
                    ContinueLoop
                EndIf
                GUICtrlSetData($idDestinationInput, $sFilePath) ; Définit l'inputbox avec le chemin du fichier.

            Case $idCombo ; Vérifie si le combobox est sélectionné et récupère le bon algorithme.
                Switch GUICtrlRead($idCombo) ; Lit la sélection du combobox.
                    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

            Case $idDecrypt
                $sSourceRead = GUICtrlRead($idSourceInput) ; Lit le chemin du fichier source dans l'input.
                $sDestinationRead = GUICtrlRead($idDestinationInput) ; Lit le chemin du fichier de destination dans l'input.
                $sPasswordRead = GUICtrlRead($idPasswordInput) ; Lit le mot de passe dans l'input.
                If StringStripWS($sSourceRead, $STR_STRIPALL) <> "" And StringStripWS($sDestinationRead, $STR_STRIPALL) <> "" And StringStripWS($sPasswordRead, $STR_STRIPALL) <> "" And FileExists($sSourceRead) Then ; Vérifie que le fichier à déchiffrer existe et qu'un mot de passe a été défini.
                    If _Crypt_DecryptFile($sSourceRead, $sDestinationRead, $sPasswordRead, $iAlgorithm) Then ; Déchiffre le fichier.
                        MsgBox($MB_SYSTEMMODAL, "Succès", "Opération réussie.")
                    Else
                        Switch @error
                            Case 2
                                MsgBox($MB_SYSTEMMODAL, "Erreur", "Impossible d'ouvrir le fichier source.")
                            Case 3
                                MsgBox($MB_SYSTEMMODAL, "Erreur", "Impossible d'ouvrir le fichier de destination.")
                            Case 30
                                MsgBox($MB_SYSTEMMODAL, "Erreur", "Impossible de créer la clé.")

                            Case 400 Or 500
                                MsgBox($MB_SYSTEMMODAL, "Erreur", "Erreur de déchiffrement.")
                            
                            Case Else
                                MsgBox($MB_SYSTEMMODAL, "Error", "Unexpected @error = " & @error)

                        EndSwitch
                    EndIf
                Else
                    MsgBox($MB_SYSTEMMODAL, "Erreur", "Veuillez vous assurer que l'information appropriée a été entrée correctement.")
                EndIf
        EndSwitch
    Until  $iMsg = $GUI_EVENT_CLOSE

    GUIDelete($hGUI) ; Supprime la GUI précédente et tous ses contrôles.
EndFunc   ;==>Example