Il est très bien, je l'ai modifier mais il y a des petit soucis, tout d'abord si la clé de chiffrement est plus grande que le premiers mot du texte a chiffré, le programme ce ferme, exemple la clé de crypter est "TEST", le premiers mot du texte a crypter est "Le", alors le programme ce ferme.
Petit autre soucis, une fois que j'ai déjà crypter ou décrypter un premier message, impossible d'en faire un autre dans la foulé, je doit re lancer le programme ( pas très conviviale )
Voila "mon" script, qu'en dites vous ?
Code : Tout sélectionner
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Form1", 367, 331, 440, 231)
Global $Input1 = GUICtrlCreateInput("Insérer la clé ici", 96, 8, 121, 18, $ES_MULTILINE)
Global $Input2 = GUICtrlCreateInput("", 16, 136, 168, 168, $ES_MULTILINE)
Global $Input3 = GUICtrlCreateInput("", 185, 136, 168, 168, $ES_MULTILINE)
Global $Label1 = GUICtrlCreateLabel("Clé de cryptage:", 16, 8, 81, 17)
Global $Label2 = GUICtrlCreateLabel("Texte non crypter", 16, 112, 87, 17)
Global $Label3 = GUICtrlCreateLabel("Texte crypter:", 232, 112, 87, 17)
Global $Button1 = GUICtrlCreateButton("Crypter!", 50, 305, 75, 25)
Global $Button2 = GUICtrlCreateButton("Décrypter!", 240, 305, 75, 25)
Global $Button3 = GUICtrlCreateButton("Effacer", 280, 8, 75, 25)
Global $Button4 = GUICtrlCreateButton("Crypter fichier .txt", 260, 50, 90, 25)
Global $Button5 = GUICtrlCreateButton("Décrypter fichier .txt", 250, 80, 100, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$Alphabet = StringSplit("1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ ", "")
_ArrayDelete($Alphabet, 0)
Global $VigCypher[37][37]
Global $VigCypher2[37][37]
$a = 1
For $c = 0 To 36
Global $ccopy = $c
VigFill($c)
Next
For $d = 0 To 36
Global $dcopy = $d
VigFill2($d)
Next
Func VigFill($offset)
Dim $res[37]
For $a = 0 To 36
$VigCypher[$ccopy][$a] = $Alphabet[Mod($a + $offset, 37)]
Next
EndFunc ;==>VigFill
Func VigFill2($offset2)
Dim $res[37]
For $a = 0 To 36
$VigCypher2[$dcopy][$a] = $Alphabet[Mod(37 + $a - $offset2, 37)]
Next
EndFunc ;==>VigFill2
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Form1
Case $Input1
Case $Input2
Case $Label1
Case $Label2
Case $Label3
Case $Input3
Case $Button1
$cle = GUICtrlRead($Input1)
$nocrypt = GUICtrlRead($Input2)
$crypt = GUICtrlRead($Input3)
While $a < StringLen($nocrypt)
For $c = 1 To StringLen($cle)
$KeyPlace = _ArraySearch($Alphabet, StringMid($cle, $c, 1))
$TextPlace = _ArraySearch($Alphabet, StringMid($nocrypt, $a, 1))
$crypt = $crypt & $VigCypher[$KeyPlace][$TextPlace]
$a += 1
Next
GUICtrlSetData($Input3, $crypt)
WEnd
Case $Button2
$cle = GUICtrlRead($Input1)
$nocrypt = GUICtrlRead($Input2)
$crypt = GUICtrlRead($Input3)
While $a < StringLen($crypt)
For $d = 1 To StringLen($cle)
$KeyPlace = _ArraySearch($Alphabet, StringMid($cle, $d, 1))
$TextPlace = _ArraySearch($Alphabet, StringMid($crypt, $a, 1))
$nocrypt = $nocrypt & $VigCypher2[$KeyPlace][$TextPlace]
$a += 1
Next
GUICtrlSetData($Input2, $nocrypt)
WEnd
Case $Button3
GUICtrlSetData($Input2, "")
GUICtrlSetData($Input3, "")
Case $Button4
$cle = GUICtrlRead($Input1)
if $cle = "" Then
MsgBox(0,"Attention!","ATTENTION, LA CLE D'ENCRYPTION EST VIDE!")
EndIf
$KeyWord = $cle
$File = FileOpenDialog("Sélectionner fichier a crypter", "C;\", "txt (*.txt)")
$Text = FileRead($File)
$a = 1
MsgBox(0, "Contenu du fichier", $Text)
$EncryptText = ""
GUICtrlSetData($Input2, $Text)
While $a < StringLen($Text)
For $c = 1 To StringLen($KeyWord)
$KeyPlace = _ArraySearch($Alphabet, StringMid($KeyWord, $c, 1))
$TextPlace = _ArraySearch($Alphabet, StringMid($Text, $a, 1))
$EncryptText = $EncryptText & $VigCypher[$KeyPlace][$TextPlace]
$a += 1
Next
GUICtrlSetData($Input3, $EncryptText)
WEnd
Case $Button5
$cle = GUICtrlRead($Input1)
$KeyWord = $cle
$File = FileOpenDialog("Sélectionner fichier a décrypter..","C;\","txt (*.txt)")
$Text2 = FileRead($file)
$a = 1
MsgBox(0,"Crypatge:",$Text2)
$DecryptText=""
GUICtrlSetData($Input3, $Text2)
While $a<StringLen($Text2)
For $d = 1 to StringLen($KeyWord)
$KeyPlace = _ArraySearch($Alphabet,StringMid($KeyWord,$d,1))
$TextPlace = _ArraySearch($Alphabet,StringMid($Text2,$a,1))
$DecryptText = $DecryptText&$VigCypher2[$Keyplace][$TextPlace]
$a+=1
Next
GUICtrlSetData($Input2, $DecryptText)
WEnd
EndSwitch
WEnd

