Thema: Delphi Caeser Verschlüsselung

Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.034 Beiträge
 
Delphi 7 Professional
 
#8

AW: Caeser Verschlüsselung

  Alt 26. Mär 2019, 17:09
Wenn bei Key = B aus dem A ein B werden soll, so ist die Differenz = 1.

Ord('A') = 65
Ord('B') = 66

Ord('B') - Ord('A') = 1

Du musst also die Differenz zwischen Ord(Key) und Ord('A') berechnen und zu Ord(text[i]) addieren, also nicht Ord(text[i]) + Key sondern Ord(text[i]) + Ord(key) - Ord('A').

Und natürlich wird Z + Ord(Key) immer ein Zeichen "hinter" den Großbuchstaben ergeben.

Wenn also aus Z + Key -> A werden soll, also ein Buchstabe, dessen Ord < Ord('Z') ist, dann musst Du Dir überlegen, welchen Wert Du dann abziehen musst, um von Ord('Z') -> 90 plus Ord(Key) auf Ord('A') -> 65 zu kommen.
Delphi-Quellcode:
function TCaeser.GetText : string;
var
  i : integer;
begin
  Result := text;
  for i := 1 to Length(Result) do begin
    Result[i] := Chr(Ord(Result[i]) + (Ord(Key) - Ord('A')));
    if Ord(Result[i]) > Ord('Z') then Result[i] := Chr(Ord(Result[i] - (Ord('Z') - Ord('A')));
  end;
end;
PS: Das ist jetzt nur hingedaddelt, keine Ahnung ob's auch korrekt ist.
  Mit Zitat antworten Zitat