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" ^^