![]() |
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 |
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. |
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?? |
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. |
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? |
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: |
Re: RC4 Implementierung - Problem mit längeren Texten
base64 habe ich schon mal implementiert
danach habe ich dann keine probleme mehr mit terminierungen? |
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 |
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) |
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 11:08 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