AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem bei XOR-Verschlüßelung

Ein Thema von TheAn00bis · begonnen am 12. Mär 2005 · letzter Beitrag vom 12. Mär 2005
Antwort Antwort
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 14:20
Ich habe gerade eben follgende XOR-Ver- und Entschlüßelung geschrieben:
Delphi-Quellcode:
          function VerschlXor(text, key:string):string;
          var i, i2: integer;
          begin
               i2:=0;
                     for i:=0 to length(text) do begin
                     text[i]:=chr((ord(text[i]) xor ord(key[i2])));
                     if i2=length(key) then i2:=0 else inc(i2);
                     end;
               result:=text;
          end;
Nun habe ich follgendes Problem: Wenn ein Buchstabe im Text mit dem selben Buchstaben verschlüßelt wird, dann wird nicht nur der Buchstabe nicht angezeigt, sondern auch keiner der folgenden Buchstaben.

Bsp: Schlüßel ist B, text ist "hallo Baum", dann verschlüßel (ins Memo) und entschlüßel ich den Text und der Text kommt raus: "hallo " (alles ab dem B ist weg). Hat jemand eine Ahnung woran das liegt?

Intern scheint das ganze allerdings immer zu klappen, also wenn ich den verschlüßelten Text in eine Variable schreibe und auch zum Entschlüßeln aus dieser Variablen lese. Also muss
chr((ord('B') xor ord('B'))) ein Zeichen ausgeben das alle dahinterkommenden verschlingt!?
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 14:30
Moin TheAn00bis,

wenn Du mit XOR zwei gleiche Werte verknüpfts, kommt 0 dabei heraus, und ein Memo zeigt nichts an, was ab der 0 kommt, da dies auch als Ende eines Strings gewertet wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#3

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 14:44
Danke! Hat jemand eine Ahnung, wie man das Problem beheben kann, so dass trotzdem der richtige Text rauskommt? Natürlich könnte ich die Zahlen rauslassen, aber das wäre ja mist.

Einige Programme (z.B. CryptTool) machen das ja auch richtig...

Edit: Ich sehe gerade das Programm zeigt auch nur die Verschlüßelten Hexadezimalwerte an, dann werde ich das wohl auch so machen.
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 18:24
Zitat von Christian Seehase:
Moin TheAn00bis,

wenn Du mit XOR zwei gleiche Werte verknüpfts, kommt 0 dabei heraus, und ein Memo zeigt nichts an, was ab der 0 kommt, da dies auch als Ende eines Strings gewertet wird.
Das könnte man verhindern, indem man im Schlüssel nur Werte zulässt, die nicht oder nur sehr unwahrscheinlich im Text vorkommen, z.B. Steuerzeichen (d.h. Ordinalwert kleiner als 32).

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#5

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 18:38
Zitat von Binärbaum:
Zitat von Christian Seehase:
Moin TheAn00bis,

wenn Du mit XOR zwei gleiche Werte verknüpfts, kommt 0 dabei heraus, und ein Memo zeigt nichts an, was ab der 0 kommt, da dies auch als Ende eines Strings gewertet wird.
Das könnte man verhindern, indem man im Schlüssel nur Werte zulässt, die nicht oder nur sehr unwahrscheinlich im Text vorkommen, z.B. Steuerzeichen (d.h. Ordinalwert kleiner als 32).

MfG
Binärbaum
Und wie willst du die als Parameter (der Parameter muss ja (in diesem Beispiel) als String übergeben werden) übergeben?


Man könnte ja zuerst mit einer For-Schleife den String durchgehen und prüfen, ob "key" einem der Zeichen im String entspricht. Wenn ja, dann wird "key" um 1 erhöht und es wird weiterprobiert. Irgendwann wird sich schon ein Zeichen finden lassen, das nicht im String vorkommt
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 19:03
Zitat von malo:
Man könnte ja zuerst mit einer For-Schleife den String durchgehen und prüfen, ob "key" einem der Zeichen im String entspricht. Wenn ja, dann wird "key" um 1 erhöht und es wird weiterprobiert. Irgendwann wird sich schon ein Zeichen finden lassen, das nicht im String vorkommt
Wenn nun aber der String key ein Teil des Textes ist, d.h. jedes in key vorhandene Zeichen kommt auch im Text vor, dann geht das schlecht.

Außerdem wäre es IMHO besser, wenn key kein String sondern eher ein array of byte wäre, da ja letztlich nur die Ordinalwerte der Zeichen in key interessieren und nicht die Zeichen an sich. Dann könnte man auch solche Werte besser übergeben, die mit einem String nur schlecht zu realisieren sind.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#7

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 19:05
Zitat von Binärbaum:
Zitat von malo:
Man könnte ja zuerst mit einer For-Schleife den String durchgehen und prüfen, ob "key" einem der Zeichen im String entspricht. Wenn ja, dann wird "key" um 1 erhöht und es wird weiterprobiert. Irgendwann wird sich schon ein Zeichen finden lassen, das nicht im String vorkommt
Wenn nun aber der String key ein Teil des Textes ist, d.h. jedes in key vorhandene Zeichen kommt auch im Text vor, dann geht das schlecht.
Nein, ich meine das erste Zeichen von "key" soll um 1 erhöht werden (also der Ordinalwert). Dieses ist ja der Wert, um den verschlüsselt werden soll
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 19:10
Zitat von malo:
Nein, ich meine das erste Zeichen von "key" soll um 1 erhöht werden (also der Ordinalwert). Dieses ist ja der Wert, um den verschlüsselt werden soll
Ach so, dass ist was anderes. Aber was wäre z.B. wenn alle möglichen Zeichen mindestens einmal im Text vorkommen? Dann sieht es immer noch (oder schon wieder?) schlecht aus. Also käme man zwangsweise durch die Verschlüsselung zu einer 0, wodurch der verschlüsselte Text ab dieser Stelle nicht mehr angezeigt werden kann.
Deshalb müsste man (wie schon bereits erwähnt) von Strings auf die reinen Zahlenwerte ausweichen und hätte dann auch keine Probleme mit derern Darstellung.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 19:17
Zitat von Binärbaum:
Zitat von malo:
Nein, ich meine das erste Zeichen von "key" soll um 1 erhöht werden (also der Ordinalwert). Dieses ist ja der Wert, um den verschlüsselt werden soll
Ach so, dass ist was anderes. Aber was wäre z.B. wenn alle möglichen Zeichen mindestens einmal im Text vorkommen? Dann sieht es immer noch (oder schon wieder?) schlecht aus. Also käme man zwangsweise durch die Verschlüsselung zu einer 0, wodurch der verschlüsselte Text ab dieser Stelle nicht mehr angezeigt werden kann.
Man geht da ja die ASCII-Codes durch. Man müsste dann nur prüfen, ob der ASCII-Code 0 ist (um 0 natürlich nicht verschlüsseln). Wenn ASCII-Code Nr. 255 NOCHMAL erhöht wird, kommt man ja bei 0 aus. Danach wird einfach weitergeprüft, und man landet wohl beim ersten Steuerzeichen (und Steuerzeichen sind ja bekanntlich recht schwierig als String wiederzugeben)
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Problem bei XOR-Verschlüßelung

  Alt 12. Mär 2005, 20:44
ich würde den string einfach in hexadezimalen werten der einzelnen buchstaben anzeigen lassen, aber in einer datei normal abspeichern (file of byte)
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:18 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