![]() |
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 |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Hi,
ich empfehle das ![]() |
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 |
Re: Kryptologie Projekt in Delphi... HILFE !!!
![]() |
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.
|
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 |
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.
|
Re: Kryptologie Projekt in Delphi... HILFE !!!
ok ich hab jetzt richedit genommen,danke.
MFG Jacqybaby |
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 |
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:
Das zum Beispiel ist die Verschlüsselung durch Verschiebung um ein Zeichen nach rechts.
Char := chr(ord(Char)+1);
Und das kann man zum Beispiel wieder in eine for-Schleife einbauen und mit jedem Buchstaben machen. Flare |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
Code:
Wenn du jetzt die erste Spalte runter gehst, begegnen dir die Zahlen 1,6,11 , also Zahlen der Form
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15 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:
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.
str:='';
for a:=1 to 5 do for x:=0 to 2 do str:= str+klartext[round(a+x*n)]; 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. |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Wie soll eine Kommazahl rauskommen, wenn ich zwei Ganzzahlen multipliziere? :roll:
|
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
So und jetzt weiss ich es genau: Delphi erkennt es, das round ist somit nicht notwendig. |
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:
![]() 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 |
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:
Das ist nicht getestet, aber im Prinzip sollte es so funktionieren.
for i:=1 to length(klartext) DIV schluessellaenge DO
for j:=i-1 to schluessellaenge begin VText:=VText+klartext[(j*schluessellaenge)+1] end; Grüße Klaus |
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 |
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 |
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:
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.
procedure TForm1.klartexteingabeClick(Sender: TObject);
begin s:=strtoint(schluessel.text); for i:=1 to s do begin memo3.Lines[1]:= end; So ich hab noch nen bisschen weiter gesucht aber hier bin ich ratlos:
Delphi-Quellcode:
Es wird nichts in das Memo-Feld geschrieben, warum nicht ?
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; MFG Jacqybaby |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Delphi-Quellcode:
so sollte das zerlegen gehen, war doch nicht so schwer - oder?
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; transponieren sollte dann so gehen
Delphi-Quellcode:
auch nicht so schwer, oder?
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; Grüße Klaus |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
Delphi-Quellcode:
aber ausgegeben wird mir das wenn ich geheimtext eingebe:
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; ![]() Ich hab schon vieles versucht aber irgendwie klappt das nicht. Außerdem soll der Geheimtext in einer Zeile(mit max. 29 Zeichen) ausgegeben werden. |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Delphi-Quellcode:
so sollte es gehen...
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; alles in einer zeile Grüße Klaus |
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:
an der Stelle komme ich nicht weiter...
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; |
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:
dazu muss natuerlich auch das memo4 in der spaltenform sein.
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; Gruss Jan |
Re: Kryptologie Projekt in Delphi... HILFE !!!
setzt aus einem verschlüsselten String wieder den Originaltext zusammen.
Delphi-Quellcode:
trockendurchlauf:
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; 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