Fehler beim Entschlüsseln eines Textes

  • Hi,
    ich bin gerade dabei ein skript zu erstellen, welches eine art chat werden soll... allerding klappt das mit dem entschlüsseln der datei nicht so richtig, deshalb brauch ich dringend hilfe, denn ich finde den Fehler einfach nicht(Das skript is im Anhang). Danke schonmal, ;)

    Robin

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • kanns leider gerade nicht testen, aber was mir auffällt:
    du löscht das $Edit1 nach etwas über 80ms wieder
    das gibt max ein kurzes aufflackern der Nachricht

    Spoiler anzeigen
    [autoit]


    While 1
    ;GUICtrlSetData($Edit1, "") ; <-- löscht Nachricht
    $read2 = _StringEncrypt(0,fileread($pfad), "1") ; <-- erst lesen, dann entschlüsseln
    GUICtrlSetData($Edit1, $read2) ; <-- schreibt Nachricht
    Sleep(80)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $read = GUICtrlRead($Edit2)
    If $read = "" then
    msgbox(48, "Information", "Du kannst keine Nachricht ohne Inhalt senden!")
    else
    FileWrite($pfad,_StringEncrypt(1, $user&": "&$read&@CRLF, "1"))
    GUICtrlSetData($Edit2, "")
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Edit: außerdem musst du die ausgelesenen Daten entschlüsseln

  • du löscht das $Edit1 nach etwas über 80ms wieder
    das gibt max ein kurzes aufflackern der Nachricht

    Ja das stimmt und ich werde es auch noch ändern... aber jetzt ist erstmal das mit dem entschlüsseln wichtiger.

  • Oh hatte ich übersehen^^
    Jetzt funktioniert es zumindest schonmal in der ersten Zeile, aber wenn man danach noch eine nachricht schreibt, wird diese wieder nicht entschlüsselt...

  • mal ein einfacher Ansatz ohne groß drüber nachgedacht zu haben ...

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #include <string.au3>
    HotKeySet("{F4}", "schliessen")
    MsgBox(48, "Information", "Zum schließen des Schul-Chats einfach nur <F4> drücken")
    $pfad = @desktopdir&"\NetControl.new"
    $user = @UserName
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Schul-Chat", 467, 442, 405, 112)
    Global $Edit1 = GUICtrlCreateEdit("", 9, 6, 442, 298, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    Global $Edit2 = GUICtrlCreateEdit("", 12, 318, 442, 73, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
    Global $Button1 = GUICtrlCreateButton("Senden", 351, 405, 103, 25, $WS_GROUP)
    Global $Button2 = GUICtrlCreateButton("Löschen", 151, 405, 103, 25, $WS_GROUP)

    [/autoit] [autoit][/autoit] [autoit]

    Global $read , $read2, $readfile
    Global $pass = "mein_pass"
    GUICtrlSetData($Edit1, "")
    GUISetState(@SW_SHOW)
    Global $Form1_AccelTable[1][2] = [["{ENTER}", $Button1]]
    GUISetAccelerators($Form1_AccelTable)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10)
    $readfile = _StringEncrypt(0,fileread($pfad),$pass,1)
    If $read2 <> $readfile Then
    $read2 = $readfile
    GUICtrlSetData($Edit1, $read2)
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $read = GUICtrlRead($Edit2)
    If $read = "" then
    msgbox(48, "Information", "Du kannst keine Nachricht ohne Inhalt senden!")
    else
    FileDelete($pfad)
    FileWrite($pfad,_StringEncrypt(1,$readfile&@CRLF&$user&": "&$read,$pass,1))
    GUICtrlSetData($Edit2, "")
    EndIf
    Case $Button2
    FileDelete($pfad)
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    func schliessen()
    Exit
    EndFunc

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

  • anbei das geänderte Script:

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <file.au3>
    #include <string.au3>
    HotKeySet("{F4}", "schliessen")
    MsgBox(48, "Information", "Zum schließen des Schul-Chats einfach nur <F4> drücken")
    $pfad = @DesktopDir & "\NetControl.new"
    $user = @UserName
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Schul-Chat", 467, 442, 405, 112)
    Global $Edit1 = GUICtrlCreateEdit("", 9, 6, 442, 298, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL))
    Global $Edit2 = GUICtrlCreateEdit("", 12, 318, 442, 73, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN, $WS_VSCROLL))
    Global $Button1 = GUICtrlCreateButton("Senden", 351, 405, 103, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    Global $Form1_AccelTable[1][2] = [["{ENTER}", $Button1]]
    GUISetAccelerators($Form1_AccelTable)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    ;GUICtrlSetData($Edit1, "")
    $read2 = _StringEncrypt(0, FileRead($pfad), "1")
    If $read2 <> GuiCtrlRead($Edit1) Then GUICtrlSetData($Edit1, $read2) ; <-- aktualisiert nur bei Änderung
    ;Sleep(80)
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    schliessen()
    Case $Button1
    $read = GUICtrlRead($Edit2)
    If $read = "" Then
    MsgBox(48, "Information", "Du kannst keine Nachricht ohne Inhalt senden!")
    Else
    FileDelete($pfad)
    FileWrite($pfad, _StringEncrypt(1, $read2 & $user & ": " & $read & @CRLF, "1"))
    GUICtrlSetData($Edit2, "")
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func schliessen()
    FileDelete($pfad) ; <-- Nachrichtendatei löschen
    Exit
    EndFunc ;==>schliessen

    [/autoit]


    Edit: verdammt, zu langsam gewesen^^