Page 1 sur 1

[R] Comparer les majuscules et minuscules dans input

Posté : mar. 31 mars 2020 22:56
par jeanmimigab
Bonjour tlm,
Avant tout et à la vue de la situation actuelle, j'espère que tous les membres du forum se portent bien...

J'ai un petit souci dans l'utilitaire que je code.
Cet utilitaire permet de stocker un mot de passe crypté qui sera stocké sur le PC dans un fichier dans "pass.txt"
1. La partie "CONFIGURATION" sert à créer et stocker le MDP crypté "pass.txt".
2. La partie "UTILISATION" permet de décrypter le code contenu dans "pass.txt" et de le coller dans le presse-papier

La validation doit se faire si les champs sont identique et non vide, mais un problème persiste...
La comparaison ne fait pas la différence entre les majuscules et minuscules, cela fait par exemple que les mots "TEST" et "test" sont détectés comme étant identique alors qu'ils ne le sont pas dans un MDP.
Je n'ai pas réussi à trouver de solution... :(

Voici mon code et merci d'avance pour votre aide..
#include <FileConstants.au3>
#include <MsgBoxConstants.au3>
#include <ComboConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <DateTimeConstants.au3>
#include <EditConstants.au3>
#include <date.au3>
#include <Crypt.au3>
#include <TrayConstants.au3>
_Verifbug()
#Region ### START Koda GUI section ### Form=C:\Users\jeanmimi\Desktop\ENECRRYPT\GUITESTCRYP.kxf
Global $Form1 = GUICreate("TESTCRYP", 628, 245, 206, 165)
GUISetIcon("C:\Users\jeanmimi\Desktop\ENECRRYPT\icone.ico", -1)
GUISetBkColor(0xB4B4B4)
Global $Group1 = GUICtrlCreateGroup("  CONFIGURATION  ", 24, 8, 585, 89)
GUICtrlSetFont(-1, 8, 400, 0, "Segoe UI")
Global $Label1 = GUICtrlCreateLabel("1. Saisir votre mot de passe", 48, 32, 190, 17)
Global $Label2 = GUICtrlCreateLabel("2. Confirmer votre mot de passe", 260, 32, 214, 17)
Global $Button1 = GUICtrlCreateButton("3. Valider", 496, 32, 99, 49)
GUICtrlSetBkColor(-1, 0x00FF00)
Global $Input1 = GUICtrlCreateInput("SAISIR MDP ICI", 40, 56, 193, 21)
Global $Input2 = GUICtrlCreateInput("CONFIRMER MDP ICI", 264, 56, 193, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $Group2 = GUICtrlCreateGroup("  UTILISATION  ", 24, 112, 585, 105)
GUICtrlSetFont(-1, 8, 400, 0, "Segoe UI")
Global $Button2 = GUICtrlCreateButton("Cliquer ici pour copier le MDP dans le presse-papier", 48, 144, 539, 49)
GUICtrlSetFont(-1, 12, 400, 0, "Segoe UI")
GUICtrlSetBkColor(-1, 0xB9D1EA)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $file2 = FileOpen("@scriptdir\pass.txt")
Global $ligne2 = FileReadLine($file2)

While 1
$msg = GUIGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
Exit
Case $msg = $Button1
   _Editpass()
Case $msg = $Button2
   _Decryptpass()
EndSelect
WEnd

Func _Editpass()
   Global Const $sFilePath = @ScriptDir & "\pass.txt"
    Global $iFileExists = FileExists($sFilePath)
      If $iFileExists Then
         FileDelete ( $sFilePath )
         _FileCreate ( $sFilePath )
   EndIf
   FileOpen(@scriptdir & "\pass.txt")
   FileSetAttrib ( @scriptdir & "\pass.txt", "+H" )
   Local $ecri2 = guictrlread($Input1)
   Local $ecri3 = guictrlread($Input2)
   If $ecri2 = $ecri3 Then
   Local $dEncrypted = StringEncrypt(True, $ecri2, 'securepassword')
   Filewrite(@scriptdir & "\pass.txt", $dEncrypted & @CRLF )
   FileClose(@scriptdir & "\pass.txt")
   MsgBox($MB_SYSTEMMODAL, 'Crytage réalisé', 'Le mot de passe est crypté et sauvegardé! Relancez TESTCRYP pour l' & "'" & 'utiliser.', 0)
      Else
      MsgBox($MB_ICONWARNING, 'erreur', 'Les deux mots de passe saisis ne sont pas identique, relancer TESTCRYP et saisir à nouveau les deux mots de passe', 0)
         FileDelete ( $sFilePath )
   Exit
      EndIf

   Exit
EndFunc
Func _Decryptpass()
   FileOpen(@scriptdir & "\pass.txt")
      Local $ligne2 = FileReadLine(@scriptdir & "\pass.txt")


         Local $sDecrypted = StringEncrypt(False, $ligne2, 'securepassword')
         ClipPut($sDecrypted)
         TrayTip("Information TESTCRYP !", 'Mot de passe décrypté et copier dans le presse-papier!', 0, $TIP_ICONASTERISK)
      Sleep (6000)
   FileClose(@scriptdir & "\pass.txt")
   Exit
EndFunc


Func StringEncrypt($bEncrypt, $sData, $sPassword)
    _Crypt_Startup() ; Démarre la librairie Crypt.
    Local $vReturn = ''
    If $bEncrypt Then ; Si le flag est défini à True alors chiffre, sinon déchiffre.
        $vReturn = _Crypt_EncryptData($sData, $sPassword, $CALG_AES_256)
    Else
        $vReturn = BinaryToString(_Crypt_DecryptData($sData, $sPassword, $CALG_AES_256))
    EndIf
    _Crypt_Shutdown() ; Arrête la librairie Crypt.
    Return $vReturn
EndFunc   ;==>StringEncrypt

Func _Verifbug()
   Local Const $sFilePath = @ScriptDir & "\pass.txt"
    Global $iFileExists = FileExists($sFilePath)
      If $iFileExists Then
     MsgBox($MB_ICONINFORMATION, 'TESTCRYP est opérationnel!', 'Vous pouvez modifier votre mot de passe  à tout moment en utilisant la partie CONFIGURATION.', 0)
      GuiSetState()
    Else
     MsgBox($MB_ICONWARNING, 'Bienvenue dans TESTCRYP', 'Vous devez configurer TESTCRYP en utilisant la partie CONFIGURATION et relancer TESTCRYP pour l' & "'" & 'utiliser.', 0)
    GuiSetState()
   EndIf
EndFunc

Re: [..] Comparer les majuscules et minuscules dans input

Posté : mer. 01 avr. 2020 08:47
par Tlem
Bonjour.

Votre test n'est pas correct.
Vous devez remplacer If $ecri2 = $ecri3 Then par If $ecri2 == $ecri3 Then

Edit :
De plus votre code contient des petites choses étranges.
Ex : Ligne 38 => Global $file2 = FileOpen("@scriptdir\pass.txt")
@Scriptdir ne devrait pas être dans les guillemets.
Vous déclarez des constantes à l'intérieur de fonctions ... Normalement on le fait en début de script et toujours en dehors des fonctions.
Je n'ai pas pris le temps de décortiquer l'intégralité de votre script, mais vous devriez re-contrôler tout ça ...

Re: [..] Comparer les majuscules et minuscules dans input

Posté : mer. 01 avr. 2020 10:36
par jchd
De plus, on ne doit jamais stocker des mots de passe, même sous forme chiffrée !
Il suffit de stocker un hash du couple {login, pass}, de préférence en y ajoutant du "sel" et de comparer ce qu'on a stocké avec ce que l'utilisateur soumet.

Re: [R] Comparer les majuscules et minuscules dans input

Posté : mer. 01 avr. 2020 13:06
par jeanmimigab
Bonjour Tlem,

Cela fonctionne parfaitement avec les "==", j'ai remis de l'ordre dans le script en suivant tes conseils.

Un grand merci et bonne journée :wink: