![]() |
25facher Cäsar (einfache Verschlüsselung)
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, Moin.
Aus Sorge um die Flugsicherheit auf dem Segelflugplatz von thiagojonas :wink: habe ich zum Spaß die im Buch (und Film) "Und Jimmy ging zum Regenbogen" beschriebene einfache Verschlüsselung aus der Erinnerung nachgebaut. Vielleicht kann unser Segelflieger den Code ja als Anregung nutzen:
Delphi-Quellcode:
Als Anhang ein kleines Beispielprogramm.
function Schluesseln(Text,Key:String;Crypt:Boolean):String;
var i,KeyIdx : Integer; begin Result:=''; KeyIdx:=0; for i:=1 to length(Text) do begin inc(KeyIdx); if KeyIdx>Length(Key) then KeyIdx:=1; if Crypt then Result:=Result+chr(ord(Text[i])+ord(Key[KeyIdx])) else Result:=Result+chr(ord(Text[i])-ord(Key[KeyIdx])) end; end; Viel Spaß PS : Natürlich ist das keine ernstzunehmende Verschlüsselung! Der Code ist auch in keinster Weise optimiert. Es soll einfach nur eine überschaubare Demonstration sein. :hi: //edit: Bevor ein anderer darauf kommt: Meine Erinnerung hat doch zu einer deutlich abweichenden Verschlüsselung geführt. Hab' noch mal im Roman nachgelesen. Dort ist das Verfahren recht gut beschrieben: Auch der verschlüsselte Text besteht dort nur aus lesbaren Buchstaben. Unabdingbar, da die Verschlüsselung nur mit Hilfe von Tabellen handschriftlich durchgeführt wurde. |
Re: 25facher Cäsar (einfache Verschlüsselung)
Das ganze nennt sich Vigenère-Verschlüsselung (wenn man es korrekt macht) und wurde in den 1850er Jahren vom berühmten Charles Babbage geknackt. Schön nachzulesen in Simon Singhs Buch "Geheime Botschaften".
Gruß Gammatester |
Re: 25facher Cäsar (einfache Verschlüsselung)
Moin, Moin.
Höre ich da wohlwollende Hinweise eines BND-Mitarbeiters? 8) Es ging mir nicht darum, eine perfekte Verschlüsselung zu formulieren oder eine Vigenére-Verschlüsselung korrekt zu implementieren; daher auch meine zusätzlichen Hinweise. Vorgestern hatte ich im Fernsehen eine Neuverfilmung des Romans vom J.M. Simmel gesehen, dazu die Sicherheitsbedenken von thiagojonas - da hab ich mich mal aus der Erinnerung heraus daran versucht. Das im Buch vorgestellte Verfahren ist noch etwas anders. Dort wird nur mit Großbuchstaben gearbeitet. Leerzeichen werden überhaupt nicht verschlüsselt, die Worttrennung muss durch den Dechiffrierer selbst erfolgen. Wie Zahlen behandelt werden, geht aus dem Buch überhaupt nicht hervor. Ohne Frage gibt es bessere Verschlüsselungsmethoden. Für die Sicherheitsanforderungen eines Flugzeitnachweises auf einem Segelflugplatz dürfte die Sicherheit allemal ausreichen. Oder ist es so einfach den folgenden Text zu entschlüsseln? Zitat:
Wer den Klartext ermittelt, wird zum Kaffee eingeladen! :cheers: |
Re: 25facher Cäsar (einfache Verschlüsselung)
Wenn du wissen willst, ob der Satz einfach zu entschlüsseln ist, kannst du es einfach probieren. (wobei es über den einfachen Angriff von Babbage nicht gehen wird, da der Text zu kurz ist, wenn man noch ein Wörterbuch integriert, dürfte es zu machen sein.)
Den Angriff von Babbage habe ich vor langer Zeit mal implementiert, das ganz ist Open Source und ![]() Ist das Schlüsselwort 11 Zeichen lang? |
Re: 25facher Cäsar (einfache Verschlüsselung)
Moin Nikolas.
Interessanter Link, werde es mir am Sonntag mal anschauen. Nein, der Schlüssel ist keine 11 Zeichen lang - hihihi 8) |
Re: 25facher Cäsar (einfache Verschlüsselung)
Ähm, ist es normal, dass Schluesseln() sowohl bei der Ver- als auch bei der Entschlüsselung binäres Zeug ausgibt? Ich dachte, es sollten lateinische Großbuchstaben rein und rauskommen sowie im Key sein.
Ansonsten wäre für den Geheimstring ein kleiner BruteForce mit anschließender Plausibilitätsprüfung möglich:
Delphi-Quellcode:
Im Moment ist aber nicht wirklich was plausibel, weil ich keine Binärzeichen auf meinem Bildschirm erwartet hätte.
function Schluesseln(Text,Key:String;Crypt:Boolean):String;
var i,KeyIdx : Integer; begin Result:=''; KeyIdx:=0; for i:=1 to length(Text) do begin inc(KeyIdx); if KeyIdx>Length(Key) then KeyIdx:=1; if Crypt then Result:=Result+chr(ord(Text[i])+ord(Key[KeyIdx])) else Result:=Result+chr(ord(Text[i])-ord(Key[KeyIdx])) end; end; procedure GetAll(key: string); var ky: string; c: char; i: Integer; const max = 3; begin if length(key) >= max then exit; for i := 0 to 25 do begin c := chr(ord('A')+i); ky := key + c; form1.memo1.Lines.add(Schluesseln('PTWAYWFZOP XRKXJVIYWARM EH VDKD FZKIXU EQBC MCYTPVOMOUJKBM BYP HJUXY FVBHF RGZYIXU VMJOMT AFERLWXV', ky, false) + ' ('+ky+')'); GetAll(ky); end; end; procedure TForm1.Button1Click(Sender: TObject); var c: char; i: Integer; begin for i := 0 to 25 do begin c := chr(ord('A')+i); GetAll(c); end; end; |
Re: 25facher Cäsar (einfache Verschlüsselung)
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, Moin blackdrake.
Nein, das binäre Zeug ist nur in der ersten Version (Post#1) erzeugt worden. Wie in Post #3 kurz erläutert, wurde die Prozedur etwas verändert. Da dies für die Nutzung von "thiagojonas" aber nicht relevant war, habe ich den Code nicht veröffentlicht. Die immer noch ungelöste Preisfrage aus Post#3 wurde also mit abgewandeltem Code erzeugt. Habe den mal angehängt. Da das ganze nur schnell nebenbei gemacht wurde, sind sowohl Schlüssel als auch der Quelltext direkt im Formular enthalten - beides ist im Anhang natürlich gelöscht. Lasse mich überraschen :zwinker: |
Re: 25facher Cäsar (einfache Verschlüsselung)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hoffe, ich habe den Algorithmus korrekt in das Brute-Force Tool implementiert. Wer Lust hat, kann mal alles durchprobieren und die Augen offen halten, sobald der Text anfängt, deutsch auszusehen. Ich vermute mal, dass das 2-Buchstaben Wort entweder "an" oder "in" ist.
Nachtrag -- Scrabble PDF 2er Wörter DE: am an da du Ei er es im in ja ob po so um wo zu (weitere?) 2er Wörter EN: my on is as it (uvm.) Ich kann das mal noch einbauen, um zu Filtern. Bitte lasse mich jedoch wissen, ob meine Implementierung korrekt ist, damit wir eine korrekte Grundlage zum Entschlüsseln haben. |
Re: 25facher Cäsar (einfache Verschlüsselung)
Hihihi, da bin ich aber gespannt!
Hatte diesen Spaß schon aus den Augen verloren. Übrigens: Ist weder "an" noch "in" |
Re: 25facher Cäsar (einfache Verschlüsselung)
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe nun alle Key's von A...ZZZZZZ durchgeprüft, und kein Key erzeugt einen dechiffrierten Text, bei dem das 2er Wort folgenden Wert hat: am an da du Ei er es im in ja ob po so um wo zu my on is as it
Ist meine Wortliste nun unvollständig oder ist der Schlüssel mehr als 6 Zeichen lang? Bitte gib mir einen Tipp. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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 by Thomas Breitkreuz