Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Delphi Entschlüsselung (https://www.delphipraxis.net/81625-delphi-entschluesselung.html)

Master-of-nichts 30. Nov 2006 14:38


Delphi Entschlüsselung
 
Hallo,

habe eine Frage zu Borland Delphi 6 Enterprise Edition.
Ist ein Schulprojekt und der Lehrer möchte das wir einen Text aus Memo2 über den Schlüssel GOLDENBR
bei der OnClick.Button2 Prozedur in Memo1 einfügen.
Die Klartext-Geheimtext-Tabelle habe ich bereits erstellt.
Könnte mir vielleicht jemand dabei helfen.
Habe absolut keine Ahnung von Delphi.
Hab erfahren das Wir eine Monoalphabetische Verschlüsselung benutzen,was auch immer das sein mag.

Bitte um schnelle Hilfe

Master-of-nichts

Lun 30. Nov 2006 14:55

Re: Delphi Entschlüsselung
 
Hi ,

habe leider nicht viel Zeit dir etwas dazu zu erklären, aber kann dir etwas geben was dir weiter hilft:

Zitat:

Hab erfahren das Wir eine Monoalphabetische Verschlüsselung benutzen,was auch immer das sein mag.
Dann guck mal
Hier

Und für die Lösung guck dir mal den Code an.
Vielleicht hilft dir das für den moment weiter.

Wenn ich heute abend was zeit habe, guck ich hier nochmal rein.

greetz Lun

Catbytes 30. Nov 2006 14:56

Re: Delphi Entschlüsselung
 
Zitat:

Zitat von Master-of-nichts
Könnte mir vielleicht jemand dabei helfen.

Bei was genau helfen?

Zitat:

Zitat von Master-of-nichts
Hab erfahren das Wir eine Monoalphabetische Verschlüsselung benutzen,was auch immer das sein mag.

Hmmmmm - 10 Sekunden Google: Guckst du Wiki

Edit: Huch - der war schneller ;-)

Master-of-nichts 5. Dez 2006 12:23

Re: Delphi Entschlüsselung
 
Hey Leute...

komm damit irgendwie nicht weiter...kann mir jemand vielleicht ein Beispiel ins Netz stellen.

Danke schonmal im Vorraus.

Master-of-nichts

alzaimar 5. Dez 2006 12:28

Re: Delphi Entschlüsselung
 
@Master-Of-Nichts: Würdest Du eventuell den Tipps und Links folgen? Weiterhin wäre es wirklich sehr freundlich, wenn Du zumindest im Ansatz zu einer Lösung beisteuern würdest. Die von Dir verfolgte Strategie, einfach gar nichts zu machen und uns die ganze Arbeit erledigen zu lassen, fruchtet vielleicht bei Dir zu Hause...


aber hier nicht.

Master-of-nichts 7. Dez 2006 13:29

Re: Delphi Entschlüsselung
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids, StdCtrls;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    Edit1: TEdit;
    Button5: TButton;
    Button6: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
var n,k,sch_wort_lang: integer;
    sch_wort,buchstabe,klartext,geheimtext : string;

procedure TForm1.FormCreate(Sender: TObject);
begin
stringgrid1.Cells[0,0]:='Klartextalphabet';
stringgrid1.cells[1,0]:='Geheimtextalphabet';
stringgrid1.Cells[0,1]:='A';
stringgrid1.Cells[0,2]:='B';
stringgrid1.cells[0,3]:='C';
stringgrid1.Cells[0,4]:='D';
stringgrid1.cells[0,5]:='E';
stringgrid1.Cells[0,6]:='F';
stringgrid1.Cells[0,7]:='G';
stringgrid1.Cells[0,8]:='H';
stringgrid1.Cells[0,9]:='I';
stringgrid1.cells[0,10]:='J';
stringgrid1.Cells[0,11]:='K';
stringgrid1.Cells[0,12]:='L';
stringgrid1.Cells[0,13]:='M';
stringgrid1.Cells[0,14]:='N';
stringgrid1.Cells[0,15]:='O';
stringgrid1.Cells[0,16]:='P';
stringgrid1.Cells[0,17]:='Q';
stringgrid1.Cells[0,18]:='R';
stringgrid1.Cells[0,19]:='S';
stringgrid1.Cells[0,20]:='T';
stringgrid1.Cells[0,21]:='U';
stringgrid1.Cells[0,22]:='V';
stringgrid1.Cells[0,23]:='W';
stringgrid1.Cells[0,24]:='X';
stringgrid1.Cells[0,25]:='Y';
stringgrid1.Cells[0,26]:='Z';

stringgrid1.Cells[1,1]:='G';
stringgrid1.Cells[1,2]:='O';
stringgrid1.cells[1,3]:='L';
stringgrid1.Cells[1,4]:='D';
stringgrid1.cells[1,5]:='E';
stringgrid1.Cells[1,6]:='N';
stringgrid1.Cells[1,7]:='B';
stringgrid1.Cells[1,8]:='R';
stringgrid1.Cells[1,9]:='U';
stringgrid1.cells[1,10]:='F';
stringgrid1.Cells[1,11]:='S';
stringgrid1.Cells[1,12]:='K';
stringgrid1.Cells[1,13]:='A';
stringgrid1.Cells[1,14]:='C';
stringgrid1.Cells[1,15]:='H';
stringgrid1.Cells[1,16]:='I';
stringgrid1.Cells[1,17]:='J';
stringgrid1.Cells[1,18]:='M';
stringgrid1.Cells[1,19]:='P';
stringgrid1.Cells[1,20]:='Q';
stringgrid1.Cells[1,21]:='U';
stringgrid1.Cells[1,22]:='V';
stringgrid1.Cells[1,23]:='W';
stringgrid1.Cells[1,24]:='X';
stringgrid1.Cells[1,25]:='Y';
stringgrid1.Cells[1,26]:='Z';
for n:=1 to 26 do stringgrid1.cells[0,n]:= chr(n+64);
end;

procedure TForm1.Button3Click(Sender: TObject);     //Schlüssel erzeugen
begin
//
end;

procedure TForm1.Button4Click(Sender: TObject);     //vereinfachen
begin
sch_wort := edit1.text;
sch_wort_lang := length(sch_wort);                  //Grossbuchstaben
for n:=1 to sch_wort_lang do sch_wort[n]:= upcase(sch_wort[n]);
n:=0;
repeat                                              //Sonderzeichen raus
      n:=n+1;
      if not(sch_wort[n] in['A'..'Z']) then
        begin
        sch_wort := copy(sch_wort,1,n-1)+ copy(sch_wort,n+1,99);
        n:=n-1;
        sch_wort_lang := sch_wort_lang -1;
        end;
      until n>sch_wort_lang;
n:=0;
repeat                                             //Doubletten raus
      n:=n+1;
      buchstabe := sch_wort[n];
      for k:=n+1 to sch_wort_lang do
          if sch_wort[k]=buchstabe then
             sch_wort := copy(sch_wort,1,k-1)+ copy(sch_wort,k+1,99);
      until n>sch_wort_lang;
edit1.text := sch_wort;
end;

procedure TForm1.Button1Click(Sender: TObject);         //verschlüsseln
begin
//
end;





procedure TForm1.Button2Click(Sender: TObject);        //entschlüsseln
begin

end;

end.

end.
Master-of-nichts

[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]

Klaus01 7. Dez 2006 13:42

Re: Delphi Entschlüsselung
 
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject); //vereinfachen
begin
  sch_wort := edit1.text;
  sch_wort_lang := length(sch_wort);
  //Grossbuchstaben
  //for n:=1 to sch_wort_lang do
  //  sch_wort[n]:= upcase(sch_wort[n]);
   sch_wort:=UpperCase(sch_wort);
   n:=0;
repeat //Sonderzeichen raus
  n:=n+1;
  if not(sch_wort[n] in['A'..'Z']) then
    begin
      sch_wort := copy(sch_wort,1,n-1)+ copy(sch_wort,n+1,99);
      n:=n-1;
      sch_wort_lang := sch_wort_lang -1;
    end;
until n > sch_wort_lang;
n:=0;
repeat //Doubletten raus
  n:=n+1;
  buchstabe := sch_wort[n];
  for k:=n+1 to sch_wort_lang do
    if sch_wort[k]=buchstabe then
      sch_wort := copy(sch_wort,1,k-1)+ copy(sch_wort,k+1,99);
until n>sch_wort_lang;

edit1.text := sch_wort;

end;
Die Position eines Buchstaben des Klartextes im StringGrid ermittelst Du so:
Delphi-Quellcode:
position:= ord(KlarText[i]) - ord('A') +1
Mit der Position kannst Du dann den Klartextbuchstaben mit dem Geheimbuchstaben austauschen.

P.S. Dein Code ist schwer zu lesen, Kommentierungen und Erklärungen und Einrückungen würden
den Code lesbarer machen, auch für Dich.

Falls Ihr auf die gleiche Schule geht, könnt Ihr Euch ja zusammentun. -> http://www.delphipraxis.net/internal...878&highlight=

Grüße
Klaus

Master-of-nichts 7. Dez 2006 14:01

Re: Delphi Entschlüsselung
 
Hallo...

danke nochmals für die Hilfe...irgendwie funktioniert es aber nicht...weiß net was ich mit

position:= ord(KlarText[i] - ord('A') +1

anstellen soll...

der Code ist Goldenberg...

vielleicht hat jemand ein Beispiel dafür, wäre echt nett von euch..

Master-of-nichts

Klaus01 7. Dez 2006 14:15

Re: Delphi Entschlüsselung
 
Den Link hast Du dir nicht angeschaut oder?

GOLDENBERG ist der Schlüssel
G ist an der 7. Stelle des Alphabets ( A=0, B=1...)
O ist an der 15. Stelle
usw.

Dein normaler Text heißt z.B. EINBEISPIEL

Dann mußt Du das E mit dem Bchstaben vertauschen der 7 Stellen weiter im Alphabet steht

hier steht E im Alphabet: ord('E') - ord('A') = 4
das is die Position von G: ord('G') - ord('A') = 6
der neue Buchstabe steht an Position 4 +6 = 10 und ist chr(ord('E')+10)

Delphi-Quellcode:
function Verschluesseln(pPlaintext, pSchluessel: String):String;
var i, j: integer;
    lBuchstabe: char;
    zPlainText:String;
    zSchluessel:String;
begin
  zPlaintext:=lowercase(pPlaintext);
  zSchluessel:=lowerCase(pSchluessel);
  result:='';
  for i:=1 to length(zPlaintext) do
    begin
      j:=ord(zSchluessel[i])- ord('a'); // Anzahl der Verschiebungen ermitteln

      if ord(zPlainText[i])+j > (ord('a') + 26) then // ist der verschobene Buchstabe > 'z'
        lBuchstabe:=chr(ord(ZPlainText[i])+j-26)
      else
        lBuchstabe:=chr((ord(ZPlainText[i])+j));
      result:=result+lBuchstabe;
    end;
end;

Grüße
Klaus

Klaus01 7. Dez 2006 14:33

Re: Delphi Entschlüsselung
 
Nun, der obere Beitrag beschreibt die Vignere Verschlüsselung.
Wie ich eben erst gelesen habe, suchst DU etwas für die Caesar Verschlüsselung.

Die ist noch simpler.

KlartextAlpabet ABCDEFGHIJKLMNOP
Schlüsselalphabet GOLDBERG

Dann wird wenn im Klartext ein A vorkommt dieses durch ein G ersetzt.

Die Position des Buchstaben Alpabet im Klartext- und Schlüsselalphabet
ist die gleiche.

Also: Position des Buchstaben ermitteln : ord(KlarText[i]) - ord('A'] + 1
Geheimtextbuchstabe: Schlüsselalphabet[ord(KlarText[i]) - ord('A'] + 1]

Mit Memo1.text[i] kannst Du auf die einzelnen Zeichen des Memo Zugreifen.
Während der Verschlüsselung am besten alles in ein String schreiben und den
String dann mit Memo2.lines.add(DeinString) dem Ausgangsmemo hinzufügen.

Mit
Delphi-Quellcode:
for i:=1 to length(Memo1.Text) do
  ...
kannst Du das ganze Memo1 durchlaufen.

Und ein wenig solltest Du auch selber machen.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Seite 1 von 2  1 2      

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