| |
|
|
- 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
|
|
|
| |
|
|
|
« 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 |
|
|
| |
|
|
|
|
E.T. | Wenn man a$=translate$(a$,"=","#") bzw. d$=translate$(d$,"=","#") auskommentiert, klappts |
|
|
| XProfan X3Grüß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... |
|
|
| |
|
|
|
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 |
|
|
| |
|
|
|
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! |
|
|
| |
|
|