Hallo Penelopee,
das mit der Caesar-Chiffre ist nicht so einfach. Das Original hatte ein Standardalphabet von nur 20 Buchstaben und keine Großschrift. Eigentlich reden wir von der einfachen monozyklischen Substitution, für die Caesars Chiffre lediglich ein früher historischer Beleg ist. Julius hat das auch nicht selbst erfunden, sondern bei Sueton geklaut, aber ist schon verjährt. Hier hast du ein bischen Code:
Delphi-Quellcode:
function Cypher(const s: string; power: integer): string;
var
i: integer;
begin
Result := s;
if power < 0 then
power := (power + 224 * Succ((power div -224))) mod 224;
if power > 0 then
for i := 1 to Length(s) do
if s[i] > #31 then
Result[i] := Chr((Ord(s[i]) - 32 + power) mod 224 + 32)
end;
Testen kannst du mit zwei Buttons und einem Memo:
Delphi-Quellcode:
const
PowerOfCesar = 3;
procedure TDemoForm.btnEncodeClick(Sender: TObject);
begin
Memo.Lines.Text := Cypher(Memo.Lines.Text, PowerOfCesar);
end;
procedure TDemoForm.btnDecodeClick(Sender: TObject);
begin
Memo.Lines.Text := Cypher(Memo.Lines.Text, - PowerOfCesar);
end;
Grüße vom marabu