Ja klar, teste es einfach aus funktioniert wunderbar:
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
const pw='
Hallo';
//Passwort
l=10;
//Länge des zu verschlüsselnden Textes
var a:
array[1..l+1]
of byte;
i,p:integer;
z:pchar;
begin
a[l+1]:=0;
//Ende von PChar
z:=addr(a[1]);
//z zeigt auf das Array um die Zahlen als Buchstaben zu lesen
memo1.clear;
//Wort erzeugen
memo1.lines.add('
Original (Zufallswerte)');
for i:=1
to l
do begin
a[i]:=random(26)+65;
//zufällig einen Buchstaben erstellen
memo1.lines.add(inttostr(a[i]));
end;
memo1.lines.add(z);
//Encrypten
memo1.lines.add('
');
memo1.lines.add('
Codiert');
p:=1;
for i:=1
to l
do begin
if p>length(pw)
then p:=1;
a[i]:=a[i]
xor ord(pw[p]);
inc(p);
end;
for i:=1
to l
do memo1.lines.add(inttostr(a[i]));
memo1.lines.add(z);
//Decrypten
memo1.lines.add('
');
memo1.lines.add('
Zurückgerechnet');
p:=1;
for i:=1
to l
do begin
if p>length(pw)
then p:=1;
a[i]:=a[i]
xor ord(pw[p]);
inc(p);
end;
for i:=1
to l
do memo1.lines.add(inttostr(a[i]));
memo1.lines.add(z);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;
end.
Edit: Das Verschlüsseln und Entschlüsseln sieht bei mir auch total identisch aus. Musst dir einfach nur mal im binären aufschreiben, was da passiert. wenn du zweimal ein Xor hintereinander machst, kommt der Anfangswert wieder heraus.
Anfangswert: 0101 =
5
Passwort: 1100 =
12
codierte Zahl: 0101 xor 1100 = 1001 =
9
und jetzt nochmal xor: 1001 xor 1100 = 0101 =
5
Also aus 5 mach 9 und wieder 5 (Mit dem Passwort 12)
Und auch wenn dein Passwort x Stellen hat, du nimmst ja bei jeder Stelle des Textes auch wieder dieselbe Stelle des Passwortes.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.