Zitat von
Sharky:
Überlege mal was in dieser Zeile passiert
Result := Result+Key[j+x];
wenn: (j + x) > als Length(Key) ist.
Das ist das eine...
Delphi-Quellcode:
letters:string='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ßöäüÖÄÜ';
//diese Buchstabenliste kann beliebig erweitert werden.
Das Problem ist, dass z mit A verschlüsselt wird, aber nach Caesar mit a ersetzt werden müsste. Z wird zu 1, sollte aber A werden und Ü wird, wie du gesagt hast, ja einen Fehler ergeben.
Zitat von
marabu:
Ich bin sicher, dass ein nicht-wissenschaftlicher Umgang mit diesem Thema hier angebracht ist, aber auch da liebe ich Genauigkeit. Die Substitution von z mit A hat nicht viel mit der Verschlüsselung nach Caesar gemein. Das damalige Standardalphabet umfasste 20 Lettern, Groß oder Kleinschrift und auch white space waren kein Thema und Ziffern waren im Zeichenvorrat bereits eingeschlossen. Jede moderne Adaption des historisch belegten Verfahrens verdient eigentlich den Namen nicht mehr. Die im Zitat geforderte Verschlüsselung ist trivial polyzyklisch (3 Ringe), arbeitet aber mit der Potenz 1, die von Augustus, dem Erben des Gaius Julius verwendet wurde. Prof. Bauer mutmaßte, dass jener nicht bis 3 zählen konnte - 3 war die von Gaius Julius bevorzugte Potenz.
Zitat von
marabu:
Auch unter einfachsten Randbedingungen sollte man mindestens eine polyzyklische Variante verwenden und Korrekturmaßnahmen zur Verschleierung der Häufigkeitsverteilung ergreifen. Und bei der heutigen Rechenleistung reden wir dann immer noch über Kinderkram.
Das stimmt, aber ich glaube nicht, dass jemand seine Bankdaten mit Caesar verschlüsseln will, sondern das solche Verschlüsselungen immer nur als kleine Spielereien genutzt werden.
Und zu den Korrekturmaßnamen würde ich mal homophone Substitution vorschlagen, was natürlich auch nicht zum Verschlüsseln von Bankdaten einlädt, aber im Gegensatz zu der Caesar-Chiffre doch dem Angreifer eine Hürden in den Weg legt.