AGB  ·  Datenschutz  ·  Impressum  







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

XOR Verschlüsselung ANFÄNGER

Ein Thema von schlitzer81 · begonnen am 2. Jun 2006 · letzter Beitrag vom 2. Jun 2006
Antwort Antwort
schlitzer81

Registriert seit: 11. Jan 2005
1 Beiträge
 
#1

XOR Verschlüsselung ANFÄNGER

  Alt 2. Jun 2006, 11:31
Hallo.

Irgendwie krieg ich das mit dem XOR nicht so gebacken.
Will eigentlich nur ne ganz einfache Aufgabe lösen...

Diesen Text: abcdefgh
mit diesem Key: 1ABCDE
Ergebnis: P#!"!#V

Hab schon alles mögliche probiert, bekomme aber
immer andere Ergebnisse.

Bin für jeden Ansatz dankbar.
SORRY BITTE VERSCHIEBEN

[edit=MrSpock]Wie gewünscht verschoben. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: XOR Verschlüsselung ANFÄNGER

  Alt 2. Jun 2006, 12:03
Einfach jedes Zeichen in eine Zahl (Byte, Integer...) umwandeln, diese per XOR verknüpfen und dann zurück in ein Zeichen (Char, AnsiChar...)
Delphi-Quellcode:
For i := 1 to Length(Text) do Begin
  B1 := Byte(Text[i]);
  B2 := Byte(Key[i]);
  Bx := B1 xor B2;
  Text[i] := Char(Bx);
End;
Zusammen isses natürlich kürzer:
Delphi-Quellcode:
For i := 1 to Length(Text) do
  Text[i] := Char(Byte(Text[i]) or Byte(Key[i]));

// oder

For i := 1 to Length(Text) do
  Text[i] := Chr(Ord(Text[i]) or Ord(Key[i]));
Das obere war aber nur, wenn Key gleich lang, oder länger als Text ist.
bei 'nem kürzerem Key muß du natürlich die Position des zu lesenden Zeichens im Key anpassen
Delphi-Quellcode:
For i := 1 to Length(Text) do Begin
  i2 := (i - 1) mod Length(Text2) + 1;
  i2 := (i - 1) mod Length(Text2) + 1;
  B1 := Byte(Text[i]);
  B2 := Byte(Key[i2]);
  Bx := B1 xor B2;
  Text[i] := Char(Bx);
End;
Delphi-Quellcode:
For i := 1 to Length(Text1) do
  Text1[i] := Char(Byte(Text1[i]) or Byte(Text2[(i - 1) mod Length(Text2) + 1]));
so geht es zwar auch, aber dann verschlüsselt der Text[1] mit Key[2], Text[2] mit Key[3] und so weiter ... also alles um ein Zeichen verschoben (aber vielleicht könnte das ja auch so gewollt sein ... funktionieren würde es jedenfalls auch)
Zitat:
i2 := i mod Length(Text2) + 1;

PS: Beim XOR ist die Entschlüsselung genauso wie der Verschlüsselung, also für Rückgängig einfach nochmal "verschlüsseln" ^^
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
2. Jun 2006, 15:17
Dieses Thema wurde von "MrSpock" von "Klatsch und Tratsch" nach "Programmieren allgemein" verschoben.
Auf Wunsch des Erstellers verschoben.
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: XOR Verschlüsselung ANFÄNGER

  Alt 2. Jun 2006, 15:38
Es kann übrigens Probleme bei der Darstellung geben, da in der API #0 als "String-ende" gilt. IN einem memo z.B. wird dann nur bis zum ersten vorkommenden #0 angezeigt. Zur Darstellung und Übertragung als String also am besten ein Escaping entwickeln. Beispiel: #1 = #1#1; #0=#1#2.

Ansonsten ist eine Reduzierung des Zahlenbereichs möglich.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  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 11:06 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