Ähm, ist es normal, dass Schluesseln() sowohl bei der Ver- als auch bei der Entschlüsselung binäres Zeug ausgibt? Ich dachte, es sollten lateinische Großbuchstaben rein und rauskommen sowie im Key sein.
Ansonsten wäre für den Geheimstring ein kleiner BruteForce mit anschließender Plausibilitätsprüfung möglich:
Delphi-Quellcode:
function Schluesseln(Text,Key:String;Crypt:Boolean):String;
var i,KeyIdx : Integer;
begin
Result:='';
KeyIdx:=0;
for i:=1 to length(Text) do begin
inc(KeyIdx);
if KeyIdx>Length(Key) then KeyIdx:=1;
if Crypt then Result:=Result+chr(ord(Text[i])+ord(Key[KeyIdx]))
else Result:=Result+chr(ord(Text[i])-ord(Key[KeyIdx]))
end;
end;
procedure GetAll(key: string);
var
ky: string;
c: char;
i: Integer;
const
max = 3;
begin
if length(key) >= max then exit;
for i := 0 to 25 do
begin
c := chr(ord('A')+i);
ky := key + c;
form1.memo1.Lines.add(Schluesseln('PTWAYWFZOP XRKXJVIYWARM EH VDKD FZKIXU EQBC MCYTPVOMOUJKBM BYP HJUXY FVBHF RGZYIXU VMJOMT AFERLWXV', ky, false) + ' ('+ky+')');
GetAll(ky);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
c: char;
i: Integer;
begin
for i := 0 to 25 do
begin
c := chr(ord('A')+i);
GetAll(c);
end;
end;
Im Moment ist aber nicht wirklich was plausibel, weil ich keine Binärzeichen auf meinem Bildschirm erwartet hätte.