AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi RC4 Implementierung - Problem mit längeren Texten
Thema durchsuchen
Ansicht
Themen-Optionen

RC4 Implementierung - Problem mit längeren Texten

Ein Thema von qwertz543221 · begonnen am 11. Jun 2009 · letzter Beitrag vom 11. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
qwertz543221
(Gast)

n/a Beiträge
 
#1

RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 18:53
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
Angehängte Dateien
Dateityp: pas rc4_194.pas (2,0 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:06
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#3

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:15
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??
Angehängte Dateien
Dateityp: pas unit1_325.pas (2,8 KB, 10x aufgerufen)
Dateityp: exe rc4_207.exe (405,0 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#4

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:21
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#5

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:27
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#6

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:30
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#7

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:33
base64 habe ich schon mal implementiert
danach habe ich dann keine probleme mehr mit terminierungen?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#8

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:37
also zumindestens nicht mehr damit, daß es Zeichen darin gibt, welche das Memo nicht mag.
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
qwertz543221
(Gast)

n/a Beiträge
 
#9

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 19:46
danke für den tip,

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

(zeile 153)
Angehängte Dateien
Dateityp: txt neu_textdokument_312.txt (1.007 Bytes, 11x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#10

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 20:00
tausch erstmal die Reinfolge

und wo knallt es genau?
das kann man beim Debuggen schön rausbekommen (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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 Uhr.
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