text: #include <Crypt.au3>
  #include <ComboConstants.au3>
  #include <GUIConstantsEx.au3>
  
  Local $bAlgorithm = $CALG_RC4
  Local $sFilePath = ""
  
  GUICreate("File Decrypter", 425, 100)
  Local $iSourceInput = GUICtrlCreateInput("", 5, 5, 200, 20)
  Local $iSourceBrowse = GUICtrlCreateButton("...", 210, 5, 35, 20)
  
  Local $iDestinationInput = GUICtrlCreateInput("", 5, 30, 200, 20)
  Local $iDestinationBrowse = GUICtrlCreateButton("...", 210, 30, 35, 20)
  
  GUICtrlCreateLabel("Password:", 5, 60, 200, 20)
  Local $iPasswordInput = GUICtrlCreateInput("", 5, 75, 200, 20)
  
  Local $iCombo = GUICtrlCreateCombo("", 210, 75, 100, 20, $CBS_DROPDOWNLIST)
  GUICtrlSetData(-1, "3DES|AES (128bit)|AES (192bit)|AES (256bit)|DES|RC2|RC4", "RC4")
  Local $iDecrypt = GUICtrlCreateButton("Decrypt", 355, 70, 65, 25)
  GUISetState(@SW_SHOW)
  
  While 1
  	Switch GUIGetMsg()
  		Case $GUI_EVENT_CLOSE
  			Exit
  
  		Case $iSourceBrowse
  			$sFilePath = FileOpenDialog("Select a file to decrypt.", "", "All files (*.*)") ; Select a file to decrypt.
  			If @error Then
  				ContinueLoop
  			EndIf
  			GUICtrlSetData($iSourceInput, $sFilePath) ; Set the inputbox with the filepath.
  
  		Case $iDestinationBrowse
  			$sFilePath = FileSaveDialog("Save the file as ...", "", "All files (*.*)") ; Select a file to save the decrypted data to.
  			If @error Then
  				ContinueLoop
  			EndIf
  			GUICtrlSetData($iDestinationInput, $sFilePath) ; Set the inputbox with the filepath.
  
  		Case $iCombo ; Check when the combobox is selected and retrieve the correct algorithm.
  			Switch GUICtrlRead($iCombo) ; Read the combobox selection.
  				Case "3DES"
  					$bAlgorithm = $CALG_3DES
  
  				Case "AES (128bit)"
  					If @OSVersion = "WIN_2000" Then
  						MsgBox(16, "Error", "Sorry, this algorithm is not available on Windows 2000.") ; Show an error if the system is Windows 2000.
  						ContinueLoop
  					EndIf
  					$bAlgorithm = $CALG_AES_128
  
  				Case "AES (192bit)"
  					If @OSVersion = "WIN_2000" Then
  						MsgBox(16, "Error", "Sorry, this algorithm is not available on Windows 2000.")
  						ContinueLoop
  					EndIf
  					$bAlgorithm = $CALG_AES_192
  
  				Case "AES (256bit)"
  					If @OSVersion = "WIN_2000" Then
  						MsgBox(16, "Error", "Sorry, this algorithm is not available on Windows 2000.")
  						ContinueLoop
  					EndIf
  					$bAlgorithm = $CALG_AES_256
  
  				Case "DES"
  					$bAlgorithm = $CALG_DES
  
  				Case "RC2"
  					$bAlgorithm = $CALG_RC2
  
  				Case "RC4"
  					$bAlgorithm = $CALG_RC4
  
  			EndSwitch
  
  		Case $iDecrypt
  			Local $sSourceRead = GUICtrlRead($iSourceInput) ; Read the source filepath input.
  			Local $sDestinationRead = GUICtrlRead($iDestinationInput) ; Read the destination filepath input.
  			Local $sPasswordRead = GUICtrlRead($iPasswordInput) ; Read the password input.
  			If StringStripWS($sSourceRead, 8) <> "" And StringStripWS($sDestinationRead, 8) <> "" And StringStripWS($sPasswordRead, 8) <> "" And FileExists($sSourceRead) Then ; Check there is a file available to decrypt and a password has been set.
  				Local $iSuccess = _Crypt_DecryptFile($sSourceRead, $sDestinationRead, $sPasswordRead, $bAlgorithm) ; Decrypt the file.
  				If $iSuccess Then
  					MsgBox(0, "Success", "Operation succeeded.")
  				Else
  					Switch @error
  						Case 1
  							MsgBox(16, "Error", "Failed to create the key.")
  						Case 2
  							MsgBox(16, "Error", "Couldn't open the source file.")
  						Case 3
  							MsgBox(16, "Error", "Couldn't open the destination file.")
  						Case 4 Or 5
  							MsgBox(16, "Error", "Decryption error.")
  					EndSwitch
  				EndIf
  			Else
  				MsgBox(16, "Error", "Please ensure the relevant information has been entered correctly.")
  			EndIf
  	EndSwitch
  WEnd