Hallo,
ich komme alleine nicht wirklich weiter.
Ich habe 2 Funktionen in meinem Programm eingefügt, die fehlerfrei funktionieren. Die eine Funktion verschlüsslt mir einen .ini Eintrag innerhalb einer bestimmten Section und die andere Funktion entschlüsselt mir das Passwort wieder.
1. Funktion zum Verschlüsseln:
Func __idIni_encrypt__()
$idctrlread = GUICtrlRead($FTPGui_Combo)
$StringAn = StringLeft("An",2)
$StringAus = StringLeft("Aus",3)
__idCombo__()
If GUICtrlRead ($PW) = "" Then
MsgBox(16, 'Fehler ', 'Fehler beim auslesen des Passwortes!', 20)
Return ($hgui)
EndIf
Local $aCryptKey = InputBox("Achtung!","Bitte Passwort zur Verschlüsselung eingeben:","","*")
If @error = 1 Then
IniWrite ($sInifile, $idctrlread, 'PW-Crypt', $StringAus)
Return $hgui
EndIf
Local $aSectionRead = IniRead ($sInifile, $idctrlread, "FTP-Passwort", "")
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim auslesen der Inidatei' & @error, 20)
_Crypt_Startup()
Local $hKey = _Crypt_DeriveKey($aCryptKey, $CALG_RC4)
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim generieren des Passwortschlüssels' & @error, 20)
Local $aIniwritePW = _Crypt_EncryptData($aSectionRead, $hKey, $CALG_USERKEY, False)
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim verschlüsseln des Passwortes' & @error, 20)
Local $aIniWrite = IniWrite ($sInifile, $idctrlread, 'FTP-Passwort', $aIniwritePW)
If not @Error Then
_Crypt_DestroyKey($aCryptKey)
_Crypt_Shutdown()
MsgBox(64, '', 'Verschlüsselung erfolgreich !', 20)
Else
MsgBox(64, 'Achtung ', 'Fehler beim verschlüsseln des Passwortes!', 20)
EndIf
GUISetState(@SW_SHOW, $hgui)
WinActivate($hgui)
GUISwitch($hgui)
Send("{UP}")
Send("{DOWN}")
IniWrite ($sInifile, $idctrlread, 'PW-Crypt', $StringAn)
__idCombo__()
EndFunc ;==>__EncyptFile
Alles anzeigen
2. Funktion zum Entschlüsseln:
Func __idIni_decrypt__()
$idctrlread = GUICtrlRead($FTPGui_Combo)
$StringAn = StringLeft("An",2)
$StringAus = StringLeft("Aus",3)
__idCombo__()
If GUICtrlRead ($SN) = "" Then
MsgBox(64, 'Achtung ', 'Bitte Servereintrag aus Combobox zur Entschlüsselung auswählen!', 20)
Return ($hgui)
EndIf
Local $aCryptKey = InputBox("Achtung!","Bitte Passwort zur Entschlüsselung eingeben!","","*")
If @error = 1 Then
IniWrite ($sInifile, $idctrlread, 'PW-Crypt', $StringAn)
Return $hgui
EndIf
Local $aSectionRead = IniRead ($sInifile, $idctrlread, "FTP-Passwort", Default)
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim auslesen der Inidatei' & @error, 20)
_Crypt_Startup()
Local $hKey = _Crypt_DeriveKey($aCryptKey, $CALG_RC4)
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim generieren des Passwortschlüssels' & @error, 20)
Local $aIniwritePW = _Crypt_DecryptData($aSectionRead, $hKey, $CALG_USERKEY, False)
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim entschlüsseln des Passwortes' & @error, 20)
Local $hString = BinaryToString($aIniwritePW)
IniWrite ($sInifile, $idctrlread, 'FTP-Passwort', $hString)
If not @Error Then
_Crypt_DestroyKey($aCryptKey)
_Crypt_Shutdown()
MsgBox(64, '', 'Entschlüsselung erfolgreich!', 20)
Else
If @error Then MsgBox(64, 'Achtung ', 'Fehler beim entschlüsseln des Passwortes' & @error, 20)
;~ MsgBox(64, 'Achtung ', 'Entschlüsselung fehlgeschlagen!', 20)
EndIf
GUISetState(@SW_SHOW, $hgui)
WinActivate($hgui)
GUISwitch($hgui)
Send("{UP}")
Send("{DOWN}")
IniWrite ($sInifile, $idctrlread, 'PW-Crypt', $StringAus)
__idCombo__()
EndFunc ;==>__DecyptFile
; ++++++++++ +++++++++ ++++++++ +++++++ ++++++ +++++ ++++ +++ ++ +
Alles anzeigen
Nun meine Frage:
Könnte mir bitte jemand behilflich sein, einen Code in meine Funktionen einzusetzen, sollte die Passwortangabe in der Inputbox zum entschlüsseln eine andere (falsche) sein, als die Passworteingabe, welche beim Verschlüsseln verwendet wurde. Ziel soll also sein: Wurde ein falsches Passwort zum entschlüsseln verwendet, soll erst eine Nachricht als Warnung ausgegeben werden, nach einem weiteren gescheiterten Versuch, soll das Programm beendet werden.
PS: Der Benutzer vergibt sein Passwort selbst. Es ist also nicht vordefiniert.