Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi xor verschlüsselung (https://www.delphipraxis.net/2579-xor-verschluesselung.html)

Jonson 30. Jan 2003 10:09


xor verschlüsselung
 
problem: zahl ’2343’ (string) kann hier nicht richtig verschlüsselt und.(oder) entschlüsselt werden. wer hat hier eine idee?


function key(s : string; ixor : byte = 52) : string;
var h : Integer;
begin
result := '';
for h := 1 to length(s) do result := result + chr(ord(s[h]) Xor ixor);
end;

’2342’ <> key(key(’2342’)) // warum???

andere zahlen funktionieren richtig

Jonson

Christian Seehase 30. Jan 2003 11:42

Moin Johnson,

also bei mir funktioniert es, erwartungsgemäss, auch mit '2343' korrekt.

Jonson 30. Jan 2003 12:04

moin Christian,

string := '2343'

allerdings wird zuerst der verschlüsselte string in memo1 kopiert (memo1.lines.add()) und für die entschlüsselung aus memo1 herausgeholt.

mfg jonson

Christian Seehase 30. Jan 2003 12:10

Moin Jonson,

dann hab' ich eventuell auch die Ursache:

Wenn Du mit 52 xor verknüpfst, wird jede '4' zu einer binären Null, und dies wird als Ende des Strings angesehen.

Du müsstest Probleme mit jeder Zahl haben, die eine 4 enthält.

'4' = chr(52) !

Jonson 30. Jan 2003 13:00

moin Christian,

ich kodiere alle möglichen zeichen (nicht nur zahlen). wie kann ich das problem bewältigen?

mfg Jonson

magic.christel 30. Jan 2003 13:15

moin Jonson,

Zitat:

Zitat von Jonson
moin Christian,

ich kodiere alle möglichen zeichen (nicht nur zahlen). wie kann ich das problem bewältigen?

mfg Jonson

Wandel es nicht einfach mit einem

... + chr(ord(s[h]) Xor ixor);

in einen Char, sondern lass es als Zahl:

... + right('00'+inttostr(ord(s[h]) Xor ixor),3);

So machst Du zwar aus jedem Zeichen 3 Zeichen, aber so geht es.

Beim zurückwandeln musst Du Dich dann immer drei Zeichen nehmen und die wieder in einen Char umrechnen.

Warum 3 Zeichen? Bei ASCII können eigentlich nur Werte zwischen 0 und 256 heraus kommen, somit ist die Maximale Länge: 3.

Bis dann

Christian

Jonson 30. Jan 2003 13:29

moin Christian,

du schreibst: Beim zurückwandeln musst Du Dich dann immer drei Zeichen nehmen und die wieder in einen Char umrechnen

ich weiß aber nicht wie? kannst du mir schreiben wie das geht?

danke Christian’s

mfg Jonson


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz