1: Ord gibt die Position im Zeichensatz.
2: der Buchstabe A hat die Position 65 (siehe Charmap ... einfach mal über Startnenü>ausführen starten, oder unter Zubehör suchen ... "Zeichensatz" oder so)
und zum Rechnen wird, da ja nur das alphabet im gesamten Zeichensatz verschlüsselt wird, alles nach vorn geschoben, also aus A=65 wird 0 usw.
3: was hat wohl 26 Zeichen ... das Vershlüsselte muß ja in diesem Bereich bleiben, also wird alles was außerhalb (größer) ist in diesen Bereich umgebrochen
4: verschigt den verschlüsselten Wert wieder an seine Position im Zeichensatz, also aus 0 wird 65=A
5: macht aus der Position wieder ein Zeichen
6: sowas willst du wissen?
das ist doch nicht wirklich dein Ernst?
2+5: die
OH hätte geholfen
OH
vielleich läßt es sich so leichter lesen/verstehen.
Delphi-Quellcode:
z := Ord(klar[i]);
z := z - Ord('A');
z := (z + key) mod 26;
z := z + Ord('A');
geheim[i] := chr(z);
wenn man das dann zusammenfaßt, dann kommt sowas raus
geheim[i] := Chr((Ord(klar[i]) - Ord('A') + Key) mod 26 + Ord('A'));
Tja und wie du vielleicht vermutest hattest, ist das nur für Großbuchstaben gültig, also das ganze nochmal für die Kleinbucghstaben, außerdem mußt du aufpassen, denn das Leerzeichen, die Satzzeichen, die Zahlen ... alles ist kein Großbuchstabe und würe durch das "mod 26" in den Bereich der Buchstaben verschoben und väre somit futsch.
Delphi-Quellcode:
var klar,geheim:string;
i,key: integer;
begin
klar := edit1.text;
geheim := klar;
key:=strtoint(edit2.text);
for i:=1 to length(klar) do
if klar in ['A'..'Z'] then
geheim[i] := Chr((Ord(klar[i]) - Ord('A') + Key) mod 26 + Ord('A'))
else if klar in ['a'..'z'] then
geheim[i] := Chr((Ord(klar[i]) - Ord('a') + Key) mod 26 + Ord('A'));
panel1.caption:=geheim;
end;
für den gesamten Zeichensazt ginge es dann so (wäre aber nicht zu empfehlen)
geheim[i] := Chr((Ord(klar[i]) + Key) mod 256)
das ganze ließe sich dann natürlich auch noch auf andere Zeichen ausweiten.
(PS: auf diese Weise würde aber alles immer nur innerhalb seines Bereichs verschoben)
Delphi-Quellcode:
else if klar in ['0'..'9'] then
geheim[i] := Chr((Ord(klar[i]) - Ord('0') + Key) mod 26 + Ord('0'));