AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte 25facher Cäsar (einfache Verschlüsselung)
Thema durchsuchen
Ansicht
Themen-Optionen

25facher Cäsar (einfache Verschlüsselung)

Ein Thema von taaktaak · begonnen am 25. Sep 2008 · letzter Beitrag vom 29. Nov 2008
Antwort Antwort
Seite 1 von 9  1 23     Letzte »    
taaktaak
Registriert seit: 25. Okt 2007
Moin, Moin.

Aus Sorge um die Flugsicherheit auf dem Segelflugplatz von thiagojonas 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:
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;
Als Anhang ein kleines Beispielprogramm.
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.


//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.
Angehängte Dateien
Dateityp: zip caesar_122.zip (2,0 KB, 48x aufgerufen)
 
gammatester
 
#2
  Alt 25. Sep 2008, 23:29
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
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#3
  Alt 26. Sep 2008, 07:23
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:
PTWAYWFZOP XRKXJVIYWARM EH VDKD FZKIXU EQBC MCYTPVOMOUJKBM BYP HJUXY FVBHF RGZYIXU VMJOMT AFERLWXV
Der gestern vorgestellte Code wurde der Buchvorlage angenähert, so dass das Ergebniss nur aus lesbaren Zeichen besteht. Weiterhin wurden die Leerzeichen beibehalten. Sollte also angeblich in wenigen Sekunden von jedem PC zu "knacken" sein - da lass ich mich mal überraschen!

Wer den Klartext ermittelt, wird zum Kaffee eingeladen!
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

 
Delphi 2005 Personal
 
#4
  Alt 26. Sep 2008, 08:23
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
Hier zu finden.

Ist das Schlüsselwort 11 Zeichen lang?
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#5
  Alt 26. Sep 2008, 08:50
Moin Nikolas.
Interessanter Link, werde es mir am Sonntag mal anschauen.
Nein, der Schlüssel ist keine 11 Zeichen lang
- hihihi 8)
Ralph
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#6
  Alt 20. Nov 2008, 23:49
Ä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:
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;
Im Moment ist aber nicht wirklich was plausibel, weil ich keine Binärzeichen auf meinem Bildschirm erwartet hätte.
Daniel Marschall
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#7
  Alt 21. Nov 2008, 07:24
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
Angehängte Dateien
Dateityp: zip caesar_448.zip (1,9 KB, 19x aufgerufen)
Ralph
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#8
  Alt 21. Nov 2008, 15:54
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.
Angehängte Dateien
Dateityp: zip cracker_197.zip (256,8 KB, 5x aufgerufen)
Daniel Marschall
  Mit Zitat antworten Zitat
taaktaak

 
Delphi 7 Professional
 
#9
  Alt 21. Nov 2008, 16:45
Hihihi, da bin ich aber gespannt!
Hatte diesen Spaß schon aus den Augen verloren.
Übrigens: Ist weder "an" noch "in"
Ralph
  Mit Zitat antworten Zitat
blackdrake

 
Delphi 10.3 Rio
 
#10
  Alt 21. Nov 2008, 21:31
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.
Angehängte Dateien
Dateityp: zip improvedcracker_957.zip (268,8 KB, 10x aufgerufen)
Daniel Marschall
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 9  1 23     Letzte »    


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 18:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz