Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr.
Seite 2 von 3     12 3      

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