AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Caesar Verschlüsselung und seine Varianten
Thema durchsuchen
Ansicht
Themen-Optionen

Caesar Verschlüsselung und seine Varianten

Ein Thema von Zeih · begonnen am 14. Nov 2005 · letzter Beitrag vom 15. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
Zeih

Registriert seit: 10. Nov 2005
Ort: Pasewalk
4 Beiträge
 
#1

Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:03
Aufgabe:
Verschlüsselung/Entschlüsselung von Text durch einfache Umwandlung in ASCII, Caesar-Addition, Caesar-Multiplikation und Caesar (Addition-Multiplikation)... tjoar...
----------------------------------------------------------
ASCCI, Caesar-Addition - verschlüsselung/entschlüsselung funtzt...
-------------------------------------------------------------
Bin momentan noch an der Entschlüsselung von einem Caesar-Additionstext...
meine Variante momentan funtzt nur mit:
-wenn mir die Anzahl(k) bekannt ist, mit der das Alphabet verschoben wurde...
brauch aber eine ohne die Kenntnis dieser Zahl... also Brute Force-mäßig...

soweit erstma der Quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, ExtCtrls, Spin;

type
  TForm1 = class(TForm)
    BtnPrepare: TButton;
    BtnDelete1: TButton;
    BtnCode: TBitBtn;
    BtnDelete2: TButton;
    BtnDecode: TBitBtn;
    BtnClose: TBitBtn;
    SpinEdit1: TSpinEdit;
    PUe1: TPanel;
    ComboBox1: TComboBox;
    EKlar: TMemo;
    EGeheim: TMemo;
    Eergebnis: TMemo;
    Label1: TLabel;
    procedure ComboBox1Change(Sender: TObject);
    procedure BtnDelete1Click(Sender: TObject);
    procedure BtnDelete2Click(Sender: TObject);
    procedure BtnPrepareClick(Sender: TObject);
    procedure BtnCodeClick(Sender: TObject);
    procedure BtnDecodeClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  quelltext: string;
  Klartext: string;
  Geheimtext:string;

implementation

{$R *.dfm}

procedure TForm1.BtnDelete1Click(Sender: TObject);
begin
EKlar.text:='';
end;

procedure TForm1.BtnDelete2Click(Sender: TObject);
begin
EGeheim.Text:='';
end;

procedure TForm1.BtnPrepareClick(Sender: TObject);
var i: integer;
    c: char;
begin
klartext:=EKlar.text;
quelltext:='';
for i:=1 to length(klartext) do
  begin
    c:=klartext[i];
    case c of
      'A' .. 'Z' : quelltext := quelltext + c;
      'a' .. 'z' : quelltext := quelltext + upcase(c);
      'ß'        : quelltext := quelltext + 'SS';
      'ä'        : quelltext := quelltext + 'AE';
      'ö'        : quelltext := quelltext + 'OE';
      'ü'        : quelltext := quelltext + 'UE';
      'Ä'        : quelltext := quelltext + 'AE';
      'Ö'        : quelltext := quelltext + 'OE';
      'Ü'        : quelltext := quelltext + 'UE';
    end;
  end;
EKlar.text:=quelltext;
end;

procedure TForm1.BtnCodeClick(Sender: TObject);
var i, ASCII, k:Integer;
    c:char;

begin
Geheimtext:='';
for i:=1 to length(Quelltext) do
case combobox1.ItemIndex of
 0: begin
    c:=Quelltext[i];
    ASCII:=ord(c);
    Geheimtext:=Geheimtext + IntToStr(ASCII);
    end;
 1: begin
    ASCII:=ord(quelltext[i]);
    k:=spinedit1.value;
    ASCII:=ASCII-k;
    if ASCII<65 then ASCII:=ASCII+26;
    geheimtext:=geheimtext+chr(ASCII);
    end;
 2: begin

    end;

 end;
 EGeheim.Text:=Geheimtext;
 end;

procedure TForm1.BtnDecodeClick(Sender: TObject);
var paar:string;
    ascii, i, k:integer;
    zeichen:char;
begin
geheimtext:=EGeheim.text;
klartext:='';
case ComboBox1.ItemIndex of
 0: begin
    for i:=1 to length(geheimtext) div 2 do
    begin
      paar:= geheimtext[2*i-1] + geheimtext[2*i];
      ascii:= StrToInt(paar);
      klartext:=klartext + chr(ascii);
    end;
    end;
 1: begin
    for i:=1 to length(geheimtext) do
    begin
      zeichen:=geheimtext[i];
      ASCII:=ord(zeichen);
      k:=spinedit1.value;
      ASCII:=ASCII+k;
      if ASCII>90 then ASCII:=ASCII-26;
      klartext:=klartext + chr (ASCII);
    end;
    end;
end;
EKlar.text:=klartext;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if Combobox1.itemindex=1
then
  begin
     spinedit1.visible:=true;
     label1.Visible:=true;
  end;
if Combobox1.ItemIndex=0
then
  begin
     spinedit1.Visible:=false;
     label1.Visible:=false;
  end;
end;

end.
http://www.directupload.net/images/0...p/xh3jgs7m.jpg

ps: Bin neu hier... Falls es hier irgendwelche Regeln gibt, wie "nicht den ganzen quelltext posten" oder sowas... schonmal sry vorweg ;-)
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#2

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:32
Also Bruteforcen dürfte bei Verschlüsselungen methodisch ziemlich falsch sein. Sicherlich ist es mit moderner Prozessorleistung möglich, alle Kombinationen durchzuprobieren, aber schon im Altertum hat man Cäsar-Texte mittels Häufigkeitsverteilung decodiert. Ich empfehle dir das gleiche, weil es einfach die "schönste" Lösung ist.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
k-weddige

Registriert seit: 15. Okt 2005
20 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:44
Schau dir dazu mal diesen Artikel. *eigenwerbungmach*
Bei einem Caesar reicht schon ein einziger geknackter Buchstabe, da die anderen dann nur verschoben sind.

k-w

//Nachtrag: Kurz: Heufigster Buchstabe ist E. Daraus lässt sich der Rest berechnen. -> Fertig
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:47
Häufigkeitsverteilung mag zwar die "schönste" Methode sein, aber dafür ist diese Verteilung auch in jeder Sprache etwas anders. Die Methode arbeitet also gut, wenn man vor dem Entschlüsseln die Sprache des Orginaltextes kennt. Sonst ist sie mehr oder weniger wertlos.

Noch ein Tipp zur Codeverbesserung:
statt
Delphi-Quellcode:
case c of
  'A' .. 'Z' : quelltext := quelltext + c;
  'a' .. 'z' : quelltext := quelltext + upcase(c);
  'ß'        : quelltext := quelltext + 'SS';
  'ä'        : quelltext := quelltext + 'AE';
  'ö'        : quelltext := quelltext + 'OE';
  'ü'        : quelltext := quelltext + 'UE';
  'Ä'        : quelltext := quelltext + 'AE';
  'Ö'        : quelltext := quelltext + 'OE';
  'Ü'        : quelltext := quelltext + 'UE';
end;
kann man auch folgendes schreiben:
Delphi-Quellcode:
case c of
  'A' .. 'Z' : quelltext := quelltext + c;
  'a' .. 'z' : quelltext := quelltext + upcase(c);
  'ß'        : quelltext := quelltext + 'SS';
  'ä','Ä'    : quelltext := quelltext + 'AE';
  'ö','Ö'    : quelltext := quelltext + 'OE';
  'ü','Ü'    : quelltext := quelltext + 'UE';
end;
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
k-weddige

Registriert seit: 15. Okt 2005
20 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:52
Zitat von Binärbaum:
Häufigkeitsverteilung mag zwar die "schönste" Methode sein, aber dafür ist diese Verteilung auch in jeder Sprache etwas anders. Die Methode arbeitet also gut, wenn man vor dem Entschlüsseln die Sprache des Orginaltextes kennt. Sonst ist sie mehr oder weniger wertlos.
Wenn du die Sprache nciht kennt ist jede andere Methode genauso wertlos: wie willst du sonst erkennen, ob du den richtigen Schlüssel hast?

k-w

PS: Man könnte eine DB mit den Verteilungen für verschiedene Sprachen anlegen. Dann wird die sprache genommen, deren Verteilung am besten auf den Text zutrifft.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 18:55
Zitat von Zeih:
...
ps: Bin neu hier... Falls es hier irgendwelche Regeln gibt, wie "nicht den ganzen quelltext posten" oder sowas... schonmal sry vorweg
Hai Zeih,

esteinmal: "Herzlich Willkommen in der Delphi-PRAXiS"

Ja, wir haben hier Regeln. Diese hast Du ja sicher auch gelesen

In deinem Thread sehe ich allerdings noch keinen "schlimmen" Verstoss gegen diese.
Grundsätzlich solltest Du keine "zu langen" Quellcodes in deinem Thread posten. Aber was ist "zu lange?" Tja, dafür gibt es keine Regel. Dies solltest Du einfach versuchen selber zu entscheiden.
Ich persönlich mag es zum Beispiel nicht wenn ich mir die Flossen wund scrollen muss weil ein sehr langes Code-Beispiel in einem Beitrag steht

Für mich gilt die Formel -> Wenn es, ohne den Sinn zu verfremden möglich ist sollte bei ca. 60 Zeilen schluss sein. Ab dieser Länge hänge ich dann lieber eine Demoprojekt an (oder auch nur die Unit).

Aber dies ist, wie gesagt, meine persönliche Meinung. Wenn Du, wie ich hoffe, noch länger in der DP bist wirst Du sicher merken das wir im großen und ganzen ein umgänglicher und lustiger Haufen sind
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Caesar Verschlüsselung und seine Varianten

  Alt 14. Nov 2005, 19:09
teste einfach den entschlüsselten Text auf bestimmte Wörter, wie "der", "die", "das", "und" usw... die Version die am meisten dieser Wörter enthält gibst du als Text aus.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Zeih

Registriert seit: 10. Nov 2005
Ort: Pasewalk
4 Beiträge
 
#8

Re: Caesar Verschlüsselung und seine Varianten

  Alt 15. Nov 2005, 13:03
erstma danke für eure beiträge...
meine brute force variante funtzt...

Delphi-Quellcode:
begin
    for k:=0 to 25 do
      begin
         klartext:='';
         for i:=1 to length(geheimtext) do
           begin
           zeichen:=geheimtext[i];
           ASCII:=ord(zeichen);
           ASCII:=ASCII+k;
           if ASCII>90 then ASCII:=ASCII-26;
           klartext:=klartext + chr (ASCII);
           end;
       Eergebnis.Lines.add(Klartext);
      end;
    end;
so...

nächstes Problem wäre nun die Verschlüsselung eines Textes per Caesar-Multiplikation...kann mir jemand ma nen Tipp geben wie ich da ran gehen soll?

hab nur das mathematische zeugs(Beispiel):
f(k)=k*s(Schlüssel) mod p(Primzahl)
k="E"
s=2, p=31
f(5)=(5*2) mod 31
=10 = "J"

nunja...
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Caesar Verschlüsselung und seine Varianten

  Alt 15. Nov 2005, 13:11
Zitat von Zeih:
erstma danke für eure beiträge...
meine brute force variante funtzt...
Und wie entscheidest du, ob du die richtige Verschiebung gefunden hast?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Zeih

Registriert seit: 10. Nov 2005
Ort: Pasewalk
4 Beiträge
 
#10

Re: Caesar Verschlüsselung und seine Varianten

  Alt 15. Nov 2005, 13:21
Zitat von Luckie:
Und wie entscheidest du, ob du die richtige Verschiebung gefunden hast?
öhm.... sind doch nur 26möglichkeiten... scrollst kurz durch... eine ergibt nur sinn...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:00 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