Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi RC4 Implementierung - Problem mit längeren Texten (https://www.delphipraxis.net/135488-rc4-implementierung-problem-mit-laengeren-texten.html)

qwertz543221 11. Jun 2009 17:53


RC4 Implementierung - Problem mit längeren Texten
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo, ich habe versucht, rons code no4 (rc4) in delphi für (ansi-)strings zu implementieren.
Dies funktioniert schon fast, nur sobald der text eine bestimmte länge überschreitet, schlägt die chiffrierung fehl und nur noch ein teil des textes wird ausgegeben.

Bitte um Hilfe, den QT habe ich beigefügt

himitsu 11. Jun 2009 18:06

Re: RC4 Implementierung - Problem mit längeren Texten
 
Also die Lage der nötigen Variablen (vorallem sbox) ist nicht unbedingt gut gewählt.


Ansonsten kann ich jetzt auf die Schnelle keinen Fehler finden.

Was ist denn ein längerer Text?

Und du weißt, daß RC4 ein binäres Ergebnis liefert und das Memo damit nicht unbedingt zurechtkommt?
> bei #0 wird das Einlesen z.B. abgebrochen
> und einige Steuerzeichen im Bereich #1..#31 machen sich auch recht ungünstig.

qwertz543221 11. Jun 2009 18:15

Re: RC4 Implementierung - Problem mit längeren Texten
 
Liste der Anhänge anzeigen (Anzahl: 2)
danke für die schnelle antwort

ich werde den qt umsortieren,aber was meinst du mit ungünstiger lage der variablen?

für den "längeren Text" habe ich verschiedene beispiele eingegeben, die exe hänge ich an, damit du es testen kannst


mit dem binären ergebnis - ich habe die operationen auf die ascii-codes der einzelen chars angewendet und später wieder in chars zurückgewandelt. um im zeichenbereich zu bleiben, ist nach jeder operation mod 256

oder hab ich das misverstanden??

himitsu 11. Jun 2009 18:21

Re: RC4 Implementierung - Problem mit längeren Texten
 
Nja, die Funktionen rc4init und rc4encdec sind direkt in die Form eingebaut, wärend sbox, x, j und k global runliegen.

RC4 ist ja eine einfache "XOR-Verschlüsselung" und da kommen im Ergebnisstring theoretisch alle Zeichen von #0 bis #255 vor.

Und da TMemo nunmal nur für Text ausgelegt ist, hat es mit Steuerzeichen unterhalb #32 manchmal Probleme und vorallem das Zeichen #0 wird als Textende angesehen.
Wenn also z.B. eine #0 im Ergebnis drin vorkommt, wird alles ab da abgeschnitten.

qwertz543221 11. Jun 2009 18:27

Re: RC4 Implementierung - Problem mit längeren Texten
 
die funktionen deklariere ich immer unter der form (haben wir halt so gelernt;))

was schlägst du denn vor, um das Abschneiden nach #0 zu verhindern?? - kann ich das umgehen?

himitsu 11. Jun 2009 18:30

Re: RC4 Implementierung - Problem mit längeren Texten
 
Wenn es weiterhin als Text behandelt werden soll, dann mußt du es so umcodieren, daß keine der Problemzeichen mehr vorkommen.

z.B. Base64 oder Hexadezimal

BinToHex und HexToBin sind direkt im Delphi implementiert
und bei den Indy's findet man auch irgendwo eine Implementierung von Base64.



Und wegen der Funktionen in der Form ... verschieb einfach die globalen Variablen in den Private-Abschnitt der Form und schon ist wieder alles zusammen, was zusammen gehört :angel:

qwertz543221 11. Jun 2009 18:33

Re: RC4 Implementierung - Problem mit längeren Texten
 
base64 habe ich schon mal implementiert
danach habe ich dann keine probleme mehr mit terminierungen?

himitsu 11. Jun 2009 18:37

Re: RC4 Implementierung - Problem mit längeren Texten
 
also zumindestens nicht mehr damit, daß es Zeichen darin gibt, welche das Memo nicht mag. :angel2:
Hab den Code ja nicht ganz genau unter die Lube genommen und weiß nicht mit Sicherheit, ob sich da nicht doch noch irgendein anderer Fehler drin versteckt.

und vorm Entschlüsseln natürlich erst wieder die Umcodierung rückgängig machen.


Ach ja ... willkommen an Board

qwertz543221 11. Jun 2009 18:46

Re: RC4 Implementierung - Problem mit längeren Texten
 
Liste der Anhänge anzeigen (Anzahl: 1)
danke für den tip,

habe ihn mal ausprobiert, aber jetzt habe ich bei der entschlüsselung eine zugriffsverletzung.

(zeile 153)

himitsu 11. Jun 2009 19:00

Re: RC4 Implementierung - Problem mit längeren Texten
 
tausch erstmal die Reinfolge

und wo knallt es genau?
das kann man beim Debuggen schön rausbekommen :angel2: (z.B. F7 und Co.)

Delphi-Quellcode:
//verschlüsseln
rc4init(memo1.Text);
text:=memo2.Text;
text:=rc4encdec(text);
text:=base64enc(text); // ergebnis codieren
memo2.Text:=text;


//entschlüsseln
rc4init(memo1.Text);
text:=memo2.Text;
text:=base64dec(text); // text codieren
text:=rc4encdec(text); // und dann entschlüsseln
memo2.Text:=text;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.
Seite 1 von 2  1 2      

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