AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Caesar-Chiffre

Ein Thema von Peter_Panther · begonnen am 16. Jun 2006 · letzter Beitrag vom 17. Jun 2006
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.378 Beiträge
 
Delphi 12 Athens
 
#1

Re: Caesar-Chiffre

  Alt 16. Jun 2006, 10:11
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'));
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz