Delphi-PRAXiS

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

MaBuSE 8. Dez 2006 10:35

Re: Delphi Entschlüsselung
 
Hallo,
erst einmal Herzlich Willkommen in der DP :dp:

Nach dem ich Deine 2 ersten Beiträge hier in diesem Thread gelesen habe, möchte ich Dich freundlich auf etwas hinweisen:
Du darfst dich nich wundern, wenn Du keine fertige Hausaufgaben bekommst, das ist nicht der Sinn dieses Forums.

Hier ein paar Hinweise, die Dich zum Erfolg führen:
Zitat:

Zitat von Master-of-nichts
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

"Könnte mir jemand dabei helfen" ist keine gute Fragestellung.

Es kommt die Frage auf bei was. Was genau ist Dein Problem?

Du bekommst 2 Links geschickt. Der eine ist die Erklärung zu "Was ist eine Monoalphabetische Verschlüsselung?" Also genau das was Du haben wolltest, der ander Link ist ein Codebeispiel, in dem jemand so was schon programmiert hat.

Deine Antwort ist:
Zitat:

Zitat von Master-of-nichts
Hey Leute...
komm damit irgendwie nicht weiter...kann mir jemand vielleicht ein Beispiel ins Netz stellen.
Danke schonmal im Vorraus.
Master-of-nichts

Das bedeutet frei übersetzt: Was interessieren mich Deine Links, ich will keine Arbeit investieren. Ich will ein fertiges Programm.

Dazu möchte ich Dich auf ein paar Verhaltensregeln hier im Forum hinweisen.
(Denen Du übrigens beim Anmelden zugestimmt hast!)
  • FAQ-Eintrag zum Stichwort "5""5"
    Zitat:

    Eben nicht *g*
    Und darum nutze bitte zuerst unsere Suchfunktion. Unser Archiv umfasst mittlerweile weit über 200.000 Beiträge und sehr viele Probleme sind schon gewälzt und natürlich auch gelöst worden. Wenn wir die Antwort schon in der Datenbank haben, dann ist dies für Dich der mit Abstand schnellste Weg, zur Lösung Deines Problemes zu kommen.
    Wenn Du nicht fündig wirst, dann zögere keine Sekunde, Deine Frage im (richtigen) Forum zu stellen.
    noch wichtiger ist aber folgender Punkt:
    FAQ-Eintrag zum Stichwort "7""7"
    Zitat:

    Mit Fragen, die sich lesen wie "...ich habe weder Ahnung noch Lust, kann mir mal einer mein Programm schreiben..." wirst Du hier nicht auf Gegenliebe stoßen. Wir sind gerne bereit, jedem zu helfen, der selber Engagement zeigt - aber wir machen nicht die Hausaufgaben Anderer.
    Zudem ist es unerläßlich, daß Du Dich selber mit dem Problem befasst hast, bevor Du in der Lage bist, dazu eine präzise Frage zu stellen.
    Etwas völlig Anderes ist es natürlich, wenn Du (noch) nicht weißt, wonach Du suchen sollst, bzw. wo Du anfangen sollst. Dann frage gerne nach geeigneten Stichworten.
Wenigstens sagst Du "Danke" ;-)

Ich habe nach Deinem 2. Beitag aufgehört zu lesen, kann also nichts zu dem Rest des Threads sagen.
Ich wünsch Dir trotzdem eine Lösung für Deine Aufgabe ;-)

[edit]Anmerkung: Ich habe mir die Zeit genommen die das hier zu schreiben, damit Du in Zukunft besser und schneller an Lösungen kommst. Es hätte mich weniger Zeit gekostet Dir hier ein ordenliche (Teil-)Lösung zu posten. Hättest Du ordendlich gefragt, ...[/edit]

Master-of-nichts 9. Dez 2006 12:43

Re: Delphi Entschlüsselung
 
Hallo,

auch wenn manche Leute hier in diesem Forum das nicht verstehen, ich habe absolut keine Ahnung was ihr von mir wollt...habe mir auch die Links durchgeschaut aber ich weiß nicht wie ich anfangen soll...möchte ja bloß einen kleinen Ansatz haben damit ich so langsam in das Programm einkomme...es hilft mir wirklich nichts wenn ihr mir Prozeduren reinstellt von denen ich nicht weiß was sie bewirken...ich möchte euch hier wirklich nicht ausnutzen...brauch halt nur ein wenig hilfe um reinzukommen deswegen wäre eine ausführliche einweißung oder ein beispiel echt nett..

Master-of-nichts


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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