Deutsch
Eingangshalle

Fehler mit password/pwd$/encode64/decode64

 
- Seite 1 -



Walter
Hallo!
Habe meine liebe Not mit dem Ver- und Entschlüsseln mittels password, pwd$, encode64 und decode64.
Es kommt dabei nicht immer das heraus, was ich einfülle...
Kurz gesagt: Es entstehen gelegentlich falsche Buchstaben.
Ob das von pwd$ kommt oder von en-/decode, kann ich leider nicht erkennen. Bin schon froh, meinen Code auf ein funktionierendes Beispiel eindampfen zu können.
Hier mein Code, der in der 1. messagebox schon 2 Fehler im Ver-/Entschlüsseln mittels password 1 zeigt (Hälxte statt Hälfte; auf), in der 2. messagebox, mittels password 0 einen weitern (s}hwieriger statt schwieriger).
' Fehler mit password/pwd$/encode64/decode64
declare orig$,enc$,dec$
'Testsatz
orig$= "Zum Test der Verschlüsselung benötigt man viel Geduld! Die Hälfte der Anstrengung ist um. Zur Einstimmung auf die zweite sind hier bereits 2 Fehler zu sehen (Hälfte und auf). Auch mit password 0 gibt es Fehler, aber noch schwieriger zu reproduzieren!"
' Teil 1: Mit password 1
password 1,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 1 - mit password 1\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)
' Teil 2: Mit password 0
password 0,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 2 - mit password 0\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)

proc __iniEncode

    parameters string s
    declare a$
    a$=pwd$(s)
    a$=translate$(a$,"=","#")
    a$=encode64(a$)
    return a$

endproc

proc __iniDecode

    parameters string s
    declare d$
    d$=decode64(s)
    d$=translate$(d$,"#","=")
    d$=pwd$(d$)
    return d$

endproc

 
03.11.2019  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


Georg
Teles
Guten Morgen,

Du hast einen kleinen Denkfehler in der Reihenfolge der Kodierung:

Bei Encode muss Translate NACH dem encode64 stehen.
Beim Decode muss Translate VOR dem decode64 stehen.

Hier dein Code korrigiert:
' Fehler mit password/pwd$/encode64/decode64
declare orig$,enc$,dec$
'Testsatz
orig$= "Zum Test der Verschlüsselung benötigt man viel Geduld! Die Hälfte der Anstrengung ist um. Zur Einstimmung auf die zweite sind hier bereits 2 Fehler zu sehen (Hälfte und auf). Auch mit password 0 gibt es Fehler, aber noch schwieriger zu reproduzieren!"
' Teil 1: Mit password 1
password 1,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 1 - mit password 1\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)
' Teil 2: Mit password 0
password 0,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 2 - mit password 0\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)

proc __iniEncode

    parameters string s
    declare a$
    a$=pwd$(s)
    a$=encode64(a$)
    a$=translate$(a$,"=","#")
    return a$

endproc

proc __iniDecode

    parameters string s
    declare d$
    d$=translate$(s,"#","=")
    d$=decode64(d$)
    d$=pwd$(d$)
    return d$

endproc


Nu dürfte alles richtig übersetzt werden

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.11.2019  
 




E.T.
Wenn man a$=translate$(a$,"=","#")  bzw. d$=translate$(d$,"=","#")  auskommentiert, klappts
 
XProfan X3
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
03.11.2019  
 




E.T.
Ah ja, aus der Hilfe zu Pwd$(S)  :


...
Es kann jedoch vorkommen, dass im String durch die Umwandlung nicht druckbare Sonderzeichen entstehen (wie z.B,. das Zeilenende-Zeichen), sodass eine Nutzung dieser Strings in INI-Dateien oder Textdateien nicht empfehlenswert ist. In binären Dateien kann er problemlos gespeichert werden.
...


Ich denke, du veränderst mit dem translate  diesen (Binär-) String derartig, das dann einfach schon beim decode64  falsche Zeichen entstehen, welche dann encode64  schon richtig "übersetzt", allerdings schon "falsch gefüttert" wird.

Was soll das translate überhaupt bewirken ??
Erschließt sich mir jetzt nicht so recht...

Hab sowas auch schon mal gemacht:
Mit pwd$  verschlüsselt, mit decode64  nochmal "verwurstelt" und schreibbar für eine .ini gemacht, und das ganze dann sauber in einer .INI-Datei abgelegt. Nie Probleme gehabt beim "zuückverwursteln"
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
04.11.2019  
 




Walter
"nicht druckbare Sonderzeichen" - darum geht es ja.
Das Konzept stammt nicht von mir, sondern von hier: [...] 
Soweit ich verstanden habe, soll das translate$ das encode-Ende-Zeichen "=", das durch pwd$ entstehen könnte, in ein harmloses Zeichen übersetzen, da sonst encode abbricht.
Und nachher wieder zurück.
Danke jedenfalls!
Ich probier halt jetzt mal ohne translate$, ob es bei meinen "normalen Texten" funktioniert. Ist halt immer ungewiss, ob dann irgendwann doch eine "böse" Konstellation auftritt...
 
04.11.2019  
 




Georg
Teles
Guten Morgen,

Du hast einen kleinen Denkfehler in der Reihenfolge der Kodierung:

Bei Encode muss Translate NACH dem encode64 stehen.
Beim Decode muss Translate VOR dem decode64 stehen.

Hier dein Code korrigiert:
' Fehler mit password/pwd$/encode64/decode64
declare orig$,enc$,dec$
'Testsatz
orig$= "Zum Test der Verschlüsselung benötigt man viel Geduld! Die Hälfte der Anstrengung ist um. Zur Einstimmung auf die zweite sind hier bereits 2 Fehler zu sehen (Hälfte und auf). Auch mit password 0 gibt es Fehler, aber noch schwieriger zu reproduzieren!"
' Teil 1: Mit password 1
password 1,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 1 - mit password 1\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)
' Teil 2: Mit password 0
password 0,"wAs du hEUTE bekommst, geHört DIiR aUch morGEn noch!"
'Testsatz verschlüsseln und wieder entschlüsseln
enc$=__iniencode(orig$)
dec$=__inidecode(enc$)
messagebox("Teil 2 - mit password 0\n\nOriginalsatz:\n"+orig$+"\n\nVer- und entschlüsselt:\n"+ dec$,"",0)

proc __iniEncode

    parameters string s
    declare a$
    a$=pwd$(s)
    a$=encode64(a$)
    a$=translate$(a$,"=","#")
    return a$

endproc

proc __iniDecode

    parameters string s
    declare d$
    d$=translate$(s,"#","=")
    d$=decode64(d$)
    d$=pwd$(d$)
    return d$

endproc


Nu dürfte alles richtig übersetzt werden

Grüße
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

10.11.2019  
 




Walter
Ja, da hab ich falsch überlegt.

Bei encode steht in der Hilfe:
alle Werte werden in maximal 64 Zeichen dargestellt:
A - Z, a - z, 0 - 9 und + sowie /. Als Endekennzeichen dient das =.

Das translate$ ist offenbar dazu da, dass das = als Endezeichen vom encode nicht mit dem = zwischen Eintragsschlüssel und Eintrag in der INI kollidiert.

Passt! Vielen Dank!
 
10.11.2019  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.366 Betrachtungen

Unbenanntvor 0 min.
Manfred Barei07.12.2024
Uwe Starke17.11.2023
Walter04.01.2023
p.specht04.06.2021
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Walter (3x)
E.T. (2x)
Georg Teles (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie