Auch dir alles Gute für das kommende Jahr, Penelopee.
Was du falsch gemacht hast kann ich dir nur sagen, wenn du vorher verrätst, was du eigentlich machen wolltest.
Dein Code sieht etwas seltsam aus. Die Nachricht wird mit jedem Zeichen aus dem Schlüssel einmal "verschlüsselt". Das Alphabet für deine Nachricht und den Schlüssel muss in beiden Fällen ['A'..'Z'] sein, sonst funktioniert es nicht.
Delphi-Quellcode:
// Einfachverschlüsselung, rollender Schlüssel
function Cipher(const text, key: string; encoding: boolean): string;
var
i: integer;
t, k, c: integer;
begin
SetLength(Result, Length(text));
for i := 1 to Length(text) do
begin
t := Ord(text[i]) - 65 + 26;
k := Ord(key[Succ(Pred(i) mod Length(key))]) - 65;
if encoding
then c := t + k
else c := t - k;
Result[i] := Chr(65 + (c mod 26));
end;
end;
function Encode(const text, key: string): string;
begin
Result := Cipher(Text, key, true);
end;
Wie könnte denn die Funktion Decode() aussehen?
Silvestergrüße vom marabu
Nachtrag:
Du wolltest wahrscheinlich gar keinen rollenden Schlüssel!?
Delphi-Quellcode:
// Mehrfachverschlüsselung
function Cipher(const text, key: string; encoding: boolean): string;
var
i, j: integer;
t, k, c: integer;
begin
SetLength(Result, Length(text));
for j := 1 to Length(key) do
for i := 1 to Length(text) do
begin
t := Ord(text[i]) - 65 + 26;
k := Ord(key[j]) - 65;
if encoding
then c := t + k
else c := t - k;
Result[i] := Chr(65 + (c mod 26));
end;
end;
Nachtrag zum Nachtrag:
Diese Form der Mehrfachverschlüsselung hat keinen Einfluss auf die Sicherheit, vervielfacht aber den Rechenaufwand.