Hallo Martin,
dein Fehler steckt in deiner Indexberechnung:
Delphi-Quellcode:
// Succ(i mod Length(cSchlussel))
Succ(Pred(i) mod Length(cSchluessel))
Delphi-Quellcode:
function XorStr(const s, key: String): String;
var
i, iKey: Integer;
begin
SetLength(Result, Length(s));
iKey := 0;
for i := 1 to Length(s) do
begin
iKey := Succ(iKey mod Length(key));
Result[i] := Chr(Ord(key[iKey]) xor Ord(s[i]));
end;
end;
Grüße vom marabu
@Uwe: Probiere es mal so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
s := XorStr(Memo1.Text, cSchluessel);
Memo1.Text := XorStr(s, cSchluessel);
End;
Oder auch mit DoCrypt() - wenn der Fehler draußen ist.