Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kryptologie Projekt in Delphi... HILFE !!! (https://www.delphipraxis.net/65881-kryptologie-projekt-delphi-hilfe.html)

Jacqybaby 21. Mär 2006 19:42


Kryptologie Projekt in Delphi... HILFE !!!
 
Hi Leute,

ich brauch unbedingt eure Hilfe. Wir sollen In Delphi ein Programm schreiben das verschiedene Verschlüsselungsverfahren absolviert. Da ich eine totale Null in Delphi bin hoffe ich ihr helft mir. Ich hab folgende grundlegende Fragen:

1. Was für eine Komponente nehme ich am besten für die Klartext/Geheimtext Ein- bzw. Ausgabe ?
2. Welche Verschlüsselungsverfahren würdet ihr mir empfehlen, die man in Delphi gut und unkompliziert umsetzen kann ? Insgesamt 3 Verfahren müssen enthalten sein, also entweder 2 symmetrische und 1 asymmetrisches oder umgekehrt.

Bei den symmetrischen würde ich gerne noch in Transposition und Substitution unterscheiden wollen.

das war's erstmal mit den Fragen es folgen garantiert noch mehr.

MFG Jacqybaby

Die Muhkuh 21. Mär 2006 19:46

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Hi,

ich empfehle das Hier im Forum suchenDEC von Hagen Reddmann (sorry Hagen, bin mir bei deinem Nachnamen nicht sicher, ob der stimmt :? )

Jacqybaby 21. Mär 2006 20:12

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
sorry aber könnt ihr nicht ganz kurz auf die Fragen antworten ? Ich hab doch geschrieben das ich in sachen Delphi nicht so bewandert bin. Diesen DEC bringt mir nicht viel, bis ich in den ganzen archiven das gefunden habe was ich brauche vergeht einfach zu viel Zeit un die hab ich nun mal nicht.

Außerdem habei ich von den meisten Verfahren keine Ahnung, die einzigen die ich kenne sind:
Cäsar-Verfahren, Polybius, Skytala von Sparta, RSA und halt normale Transposition (bei der einfach der Geheimtext zeilenweise in eine Tabelle geschrieben wird und die dann spaltenweise wieder ausgegeben wird).

Diese Verfahren sind auch die unter dennen ich für mein Projekt wählen kann.

Also bitte bitte ich brauche vernünftige Antworten und keine Verweise.

MFG Jacqybaby

mkinzler 21. Mär 2006 20:21

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
LockBox enthält verschiedene Komponenetn für verschiedene Verschlüsselungsverfahren.

Luckie 21. Mär 2006 20:22

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Der Vreweis auf das DEC war eine Antwort auf deine Frage. Und zur Eingabe kann man ein Memo oder ein Richedit nehmen, je nachdem was du vor hast.

Jacqybaby 21. Mär 2006 20:32

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
das sollen die felder zu Geheimtext- bzw. Klartexteingabe sein ! Memo ist das irgendwie doof, kann man da keine Listbox nehmen oder einfach ein Editfeld, wlches die selbe größe wie eine Listbox hat ?

MFG Jacqbaby

mkinzler 21. Mär 2006 20:37

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Ein Memo ist mehr oder weniger ein mehrzeiliges Editfeld und nätürlich kannst du auch eine Listbox dafür verwenden, wenn du unbedingt willst.

Jacqybaby 21. Mär 2006 20:45

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
ok ich hab jetzt richedit genommen,danke.

MFG Jacqybaby

Jacqybaby 21. Mär 2006 20:51

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
wie kann ich denn ein Transpositionsverfahren in Delphi umsetzen ? Mir fehlt wie immer der Ansatz. Wie schaffe ich es das der klartext in eine Art Tabelle zeilenweise geschrieben wird und dann verschlüsselt (also spaltenweise) wieder ausgegeben wird ?

MFG Jacqybaby

Flare 21. Mär 2006 20:54

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Ich weiß zwar gerade nicht direkt was du mit transpositionsverfahren meinst, hoffe ich antworte also auf das richtige:

Delphi-Quellcode:
Char := chr(ord(Char)+1);
Das zum Beispiel ist die Verschlüsselung durch Verschiebung um ein Zeichen nach rechts.
Und das kann man zum Beispiel wieder in eine for-Schleife einbauen und mit jedem Buchstaben machen.


Flare

Nikolas 21. Mär 2006 21:18

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Zitat:

halt normale Transposition (bei der einfach der Geheimtext zeilenweise in eine Tabelle geschrieben wird und die dann spaltenweise wieder ausgegeben wird
Wenn du dieses Verfahren machen willst, schreibs dir einfach mal hin:

Code:
1  2  3  4  5
6  7  8  9  10 
11 12 13 14 15
Wenn du jetzt die erste Spalte runter gehst, begegnen dir die Zahlen 1,6,11 , also Zahlen der Form
a+x*n, wobei a die Nummer deiner Spalte ist (hier 1) x die Nummer der Zeile ist und n die Anzahl der Ziffern pro Zeile (hier 5). (Wobei hier die 1 die Koordinate (1,0) hat.
Also brauchst du sowas wie eine Schleife
Delphi-Quellcode:
str:='';
for a:=1 to 5 do
 for x:=0 to 2 do
 str:= str+klartext[round(a+x*n)];
Ich weiss grad nicht, ob erkannt wird, dass das Produkt aus zwei Integern wieder integer ist, wenn es so ist, kannst du das Round auch weglassen.
Dabei muss noch beachtet werden, dass Strings eigentlich bei Null beginnen (str:='123' -> str[0]=1)
dann musst du dir noch Gedanken über einen möglichen Abbruch der Schleife machen, also sowas wie (if a+x*n>high(klartext) oder so.

Luckie 21. Mär 2006 21:20

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Wie soll eine Kommazahl rauskommen, wenn ich zwei Ganzzahlen multipliziere? :roll:

Nikolas 22. Mär 2006 12:38

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Zitat:

Zitat von Luckie
Wie soll eine Kommazahl rauskommen, wenn ich zwei Ganzzahlen multipliziere? :roll:

Ich habe nicht geschrieben, dass ich nicht weiss, ob der Körper der natürlichen Zahlen bezüglich der gewöhnlichen Muliplikation abgeschlossen ist, sondern, dass ich nicht weiss, ob Delphi erkennt, dass das Ergebniss dieser speziellen Multiplikation eine natürliche Zahl ist. :zwinker:

So und jetzt weiss ich es genau: Delphi erkennt es, das round ist somit nicht notwendig.

Jacqybaby 22. Mär 2006 12:43

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Ich versuche seit gestern krampfhaft diesen Transpositionsverfahren hin zu bekommen. Aber irgendwie will es nicht funktionieren. Also meine benutzer oberfläche sieht so aus:

http://www.jacqyzone.de/jshome/bilder/delphi_krypto.jpg

Wenn ich jetzt einen Text eingebe soll der zeilenweise in die Listbox eingetragen werden,d.h. wenn der Benutzer bei der schluesseleingabe 5 eingibt sollen die Zeilen mit max 5 Zeichenbelegt sein. Wenn ich dann auf verschlüsseln klicke soll der Klartext spaltenweise in die Listbox des Geheimtextes eingetragen werden, so dass eine geheime Nachricht entsteht. Wie Realisiere ich das ? Wenn ihr etwas anders gestalten würdet um es nicht so umständlich zu machen, gebt mir bitte Anregungen.

MFG Jacqybaby

Klaus01 22. Mär 2006 13:57

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Schlüssellänge 5

wenn Dein Klartext jetzt
so ausschaut:

diesisteinBeispiel

d i e s i
s t e i n
B e i s p
i e l * *

wird daraus

dsBiiteeeeilsis*inp*

das ist Dein verschlüsselter Text
o[1],o[6],o[12],o[18],o[2],o[7]....

Delphi-Quellcode:
for i:=1 to length(klartext) DIV schluessellaenge DO
  for j:=i-1 to schluessellaenge
   begin
    VText:=VText+klartext[(j*schluessellaenge)+1]
   end;
Das ist nicht getestet, aber im Prinzip sollte es so funktionieren.

Grüße
Klaus

Jacqybaby 22. Mär 2006 15:12

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Aha so weit so gut, jetzt hab ich nur das Problem, dass ich nciht weiss wie ich die Eingabe in ein Edit-Feld so zerteile, dass ich sie als einzelne Buchstaben in die Listbox eingetragen werden damit ich sie dann in dem oben gennanten Algorithmus verabeiten kann.

MFG Jacqybaby

Klaus01 22. Mär 2006 15:34

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
mit der Listbox stelle ich mir das auch etwas schwieriger vor.
Einfacher geht es denke ich mit einem TMemo.

In dem Klartextfenster nach dem die Anzahl der Zeichen eingetragen wurden
die der Schüsselänge entspricht eine neue Zeile hinzufügen
und dort dann wieder die gewünschte Anzahl an Zeichen eintragen....

Zum Umwandeln kannst Du dir dann entweder den Klartext als ein String
lassen, quasi so wie er eingeben wurde oder
Du machst die Umwandlung über die Zeilen und Spalten des Memos

Vtext:=Vtext+memo(zeile1,zeichen1)
vtext:=Vtext+memo(zeile2,zeichen1)
...

vtext:=vtext+memo(zeilex,zeicheny)

Das natürlich in einer Schleife.
memo beinhaltet die Anzahl der Zeilen als propertie

Der Rest ist dann noch ein wenig basteln.

Grüße
Klaus

Jacqybaby 22. Mär 2006 15:48

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
wofür steht

"Vtext" ?

was ist "propertie" ?

so weit bin ich jetzt was die Eingabe in das Memo-Feld betrifft:

Delphi-Quellcode:
procedure TForm1.klartexteingabeClick(Sender: TObject);
begin
s:=strtoint(schluessel.text);

for i:=1 to s do
begin
memo3.Lines[1]:=
end;
Mein Problem ist nach wie vor das Zerteilen des Editfeldes in einzelne Buchstaben, die dann nacheinander in eine Zeile geschrieben werden, die der Länge des Schlüssels entspricht.

So ich hab noch nen bisschen weiter gesucht aber hier bin ich ratlos:

Delphi-Quellcode:
procedure TForm1.klartexteingabeClick(Sender: TObject);
var i,j:integer;
begin
s:=strtoint(schluessel.text);
l:=length(edit3.Text);
klartext:=edit3.Text;
for i:=1 to s do
  for j:=0 to l Do
begin
memo3.Lines.Add[i]:=klartext[i];
end;
end;
Es wird nichts in das Memo-Feld geschrieben, warum nicht ?

MFG Jacqybaby

Klaus01 22. Mär 2006 17:44

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Delphi-Quellcode:
procedure TForm1.klartexteingabeClick(Sender: TObject);
var
  i:integer;
  text_dummy:string;

begin
  // memo löschen
  memo3.text:='';

  // Schlüssellänge
  s:=strtoint(schluessel.text);
 
  klartext:=edit3.Text;

  // fülle klartext bis die Länge von klartext ein vielfaches von s ist
  while length(klartext) mod s <> 0 do
   klartext:=klartext+' ';

  text_dummy:=''
  //zerlege klartext in zeilen mit s = Anzahl von Zeichen
  for i:=1 to length(klartext) do
    begin
      text_dummy:=text_dummy+klartext[i];
      if i MOD s = 0
        begin
          memo3.lines.add(text_dummy);
          text_dummy:='';
        end;
    end;
end;
so sollte das zerlegen gehen, war doch nicht so schwer - oder?

transponieren sollte dann so gehen
Delphi-Quellcode:
     for spalte:=1 to s do
       begin
         for zeile:=0 to memo3.Lines.Count-1 DO
           begin
             memo2.text:=memo2.text+memo3.lines.strings[zeile][spalte];
           end;
       end;
auch nicht so schwer, oder?


Grüße
Klaus

Jacqybaby 22. Mär 2006 19:15

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Zitat:

Zitat von Klaus01
Schlüssellänge 5

Delphi-Quellcode:
for i:=1 to length(klartext) DIV schluessellaenge DO
  for j:=i-1 to schluessellaenge
   begin
    VText:=VText+klartext[(j*schluessellaenge)+1]
   end;

hab es folgendermaßen versucht einzu bauen:

Delphi-Quellcode:
procedure TForm1.verschluesselnClick(Sender: TObject);
var vtext:string;
    i,j,s:integer;
begin
klartext:=memo3.Text;
s:=strtoint(schluessel.text);
vtext:='';

for i:=1 to length(klartext) DIV s{chluessellaenge} DO
  for j:=i-1 to length(klartext) do
   begin
    vtext:=vtext+klartext[(j*s{chluessellaenge})+1];
    memo4.lines.add(vtext);
    end;
end;
aber ausgegeben wird mir das wenn ich geheimtext eingebe:

http://www.jacqyzone.de/jshome/bilder/krypto_fehler.jpg

Ich hab schon vieles versucht aber irgendwie klappt das nicht. Außerdem soll der Geheimtext in einer Zeile(mit max. 29 Zeichen) ausgegeben werden.

Klaus01 22. Mär 2006 20:48

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Delphi-Quellcode:
procedure TForm1.verschluesselnClick(Sender: TObject);
var
    i,j,s:integer;
begin
 
  s:=strtoint(schluessel.text);
  for j:=1 to s do
    begin
      for i:=0 to memo3.Lines.Count-1 DO
        begin
          memo4.text:=memo4.text+memo3.lines.strings[i][j];
        end;
    end;
end;
so sollte es gehen...
alles in einer zeile

Grüße
Klaus

Jacqybaby 22. Mär 2006 21:58

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
so ich hab mal einen verbalen Algirithmus für das entschlüsseln formuliert:

1. Ermittle Anzahl der Zeilen(memmo.lines.count)
2. Beginne mit dem 1. Buchstaben des verschluesselten textes.
3. (Springe 4 Stellen weiter, schreibe den (an dieser Stelle stehenden) Buchstaben)* schlüssel
4. (Gehe eine Stelle weiter, wiederhole 3.) solange bis length(verschluesselter text) .

Das müsste eigentlich funktionieren. Die Schwierigkeit ist jetzt aber das in Delphi zu formulieren.

Ich hab schon was versucht:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s,z,i,j:integer;
    vtext:string;
begin
z:=memo3.lines.count;
s:=strtoint(schluessel.Text);
vtext:=memo4.Text;
memo3.Lines.Clear;
  for i:=0 to length(vtext) do
  begin
    for j:=1 to s Do
    begin
    XXXXXXXXX//hier müsste das innere der Klammer aus 3. und 4. formuliert werden...
    end;
  end;
end;
an der Stelle komme ich nicht weiter...

Jan 23. Mär 2006 01:51

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
Ich verstehe nicht ganz, wo das problem ist..
Wenn das verschluesseln nun schon klappt, dann ist das entschluesseln doch bei diesem Algorithmus ein Kinderspiel, man invertiert einfach den Verschluesselungsalgo.

Delphi-Quellcode:
procedure TForm1.verschluesselnClick(Sender: TObject);
var
    i,j,s:integer;
begin
  //zunaechst memo3 leeren.
  s:=strtoint(schluessel.text);
  for j:=1 to s do
    begin
      for i:=0 to memo4.Lines.Count-1 DO
        begin
          memo3.text:=memo3.text+memo4.lines.strings[i][j];
        end;
    end;
end;
dazu muss natuerlich auch das memo4 in der spaltenform sein.

Gruss
Jan

Klaus01 23. Mär 2006 07:32

Re: Kryptologie Projekt in Delphi... HILFE !!!
 
setzt aus einem verschlüsselten String wieder den Originaltext zusammen.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s,i,j,z:integer;
    vtext,otext:string;
begin
  s:=strtoint(schluessel.Text);  // Schlüssellänge
  z:=length(vtext) div s         // Anzahl der "Spalten"
  vtext:=memo4.Text;
  otext:='';
  for i:=1 to z do                    // durchlaufe die Spalte, äußere Schleife
    for j:=1 to s do                 //durchlaufe die Zeilen, innere Schleife
      otext:=otext+vtext[((j-1)*z)+i)] // klartext zeichen an position (j-1)*zeilenanzahl + spaltennummer      
end;
trockendurchlauf:
vtext = dsBiiteeeeilsis*inp*
mit s = 5
z = 4
spalte 1
otext:=otext+vtext[(0*4)+1] otext=d
otext:=otext+vtext[(1*4)+1] otext=di
otext:=otext+vtext[(2*4)+1] otext=die
otext:=otext+vtext[(3*4)+1] otext=dies
otext:=otext+vtext[(4*4)+1] otext=diesi

spalte2
otext:=otext+vtext[(0*4)+2] otext=diesis
otext:=otext+vtext[(1*4)+2] otext=diesist
otext:=otext+vtext[(2*4)+2] otext=diesiste
otext:=otext+vtext[(3*4)+2] otext=diesistei
otext:=otext+vtext[(4*4)+2] otext=diesistein

spalte3
...
spalte4
otext:=otext+vtext[(0*4)+4] otext=diesis..i
otext:=otext+vtext[(1*4)+4] otext=diesist..ie
otext:=otext+vtext[(2*4)+4] otext=diesiste..iel
otext:=otext+vtext[(3*4)+4] otext=diesistei..*
otext:=otext+vtext[(3*4)+4] otext=diesistei..**

Hoffe, es ist diesmal kein Denkfehler drin.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 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-2025 by Thomas Breitkreuz