Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kryptographie (https://www.delphipraxis.net/160701-kryptographie.html)

schokoschnecke 26. Mai 2011 20:14

Kryptographie
 
Hallo,
Ich schreibe morgen eine Klausur über Kryptographie und habe dieses Programm geschrieben. In der Schule hat es funktioniert. Es geht um Transposition, also dass der Text in Zeilen aufgeteilt wird und dann von oben nach unten aufgeschrieben wird. Nun funktioniert das Programm auf einmal nicht mehr, ich versteh es nicht, ich finde kein Fehler. Kann mir bitte jemand helfen? :(
Der Fehler muss im unteren Teil beim Verschlüsseln liegen, denn das Leerzeichen löschen, etc. läuft einwandfrei.


Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var text1,text2,text3: string;
i,laenge,laenge2,schluessel,anzahl,i2,i3 : integer;

begin

text1 := memo1.Lines.Text;

i := 1;
laenge := length(text1) + 1;

 repeat
  if text1[i] = ' ' then
  i := i + 1
  else
  begin
    text2 := text2 + text1[i];
    i := i + 1;
  end;
 until i = laenge;

 text2 := uppercase(text2);
 text2 := stringreplace(text2,chr(10),'',[rfreplaceall]);
 text2 := stringreplace(text2,chr(13),'',[rfreplaceall]);

 schluessel := strtoint(edit1.Text);

 repeat
 laenge2 := length(text2);

 if laenge2 mod schluessel > 0 then
  text2 := text2 + 'X' ;

 until laenge2 mod schluessel = 0;

 anzahl := laenge2 div schluessel;

 i := 1;
 text3 := '';

 for i2 := 1 to schluessel do
 begin
 i3 := 0;
 repeat
 begin
 text3 := text3 + text2[i];
 i3 := i3 + 1;
 i := i + schluessel;
 end
 until i3 = anzahl;
 i := i2 + 1;
 end;

 memo2.Lines.Text := text3;

end;

Luckie 26. Mai 2011 20:25

AW: Kryptographie
 
Zitat:

Zitat von schokoschnecke (Beitrag 1103160)
Nun funktioniert das Programm auf einmal nicht mehr,

Interessant. Und verrätst du uns auch, was nicht funktioniert? Oder sollen wir hier raten?

rollstuhlfahrer 26. Mai 2011 20:28

AW: Kryptographie
 
Also die erste Schleife kann man einsparen durch ein weiteres Delphi-Referenz durchsuchenStringReplace(). Ansonsten sind Fehler so gut wie nicht zu erkennen, da die Einrückung vor allem bei Schleifen nicht vorhanden ist.

Bernhard

idefix2 26. Mai 2011 20:50

AW: Kryptographie
 
Wenn Du statt repeat Schleifen for-Schleifen verwenden würdest, wäre viel leichter zu durchschauen, was das Programm genau macht. So ist es extrem undurchsichtig, aber auch auf den zweiten Blick ist kein Fehler zu erkennen. Wenn Du uns verraten würdest, was das Programm falsch macht, könnte man Dir vielleicht eher helfen.

Bummi 26. Mai 2011 20:56

AW: Kryptographie
 
@rollstuhlfahrer STRG + D

außer dem entfernen von einigen Whitespaces, Uppercase und dem anhängen von n "X" tut das Programm doch nichts, wo ist die Verschlüsselung?

rollstuhlfahrer 26. Mai 2011 22:28

AW: Kryptographie
 
Zitat:

Zitat von Bummi (Beitrag 1103167)
@rollstuhlfahrer STRG + D

Im Browser heißt das "bookmarken". In Delphi kommt es bei mir zu: ... das wollen wir lieber jetzt nicht testen. Und in kwrite wird dann die Zeile auskommentiert.

Zitat:

Zitat von Bummi (Beitrag 1103167)
außer dem entfernen von einigen Whitespaces, Uppercase und dem anhängen von n "X" tut das Programm doch nichts, wo ist die Verschlüsselung?

Die Verschlüsselung ist schon da, weil in der interessanten Konstruktion von for-Schleife (i2) und repeat-until-Struktur doch was in der Art hoch-runter passiert. Ich durchblicke das aber nicht.

Bernhard

himitsu 26. Mai 2011 23:09

AW: Kryptographie
 
Strg+D ist, "nur" in Delphi XE der CodeFormatter.

Also leider vollkommen "nutzlos" für jemanden ohne XE.

jobo 26. Mai 2011 23:43

AW: Kryptographie
 
Eines meiner Lieblingszitate: "Grad ging es noch", nur noch getoppt von "Ich hab nix gemacht!".
Wenn es wirklich so ist, bleiben nur noch die Parameter, die sich ändern können, also der Text und der Schlüssel.
Der Schlüssel wird ungeprüft aus einem Textwert gebildet. Das kann schon mal krachen, falls es keine (Ganz)Zahl ergibt.
Vielleicht funktioniert das "Verschlüsseln" nicht, wenn die Textlänge kleiner ist als die Schlüsselzahl.

implementation 27. Mai 2011 06:56

AW: Kryptographie
 
Zitat:

Zitat von rollstuhlfahrer (Beitrag 1103174)
Im Browser heißt das "bookmarken". In Delphi kommt es bei mir zu: ... das wollen wir lieber jetzt nicht testen. Und in kwrite wird dann die Zeile auskommentiert.

In Kate tut sich gar nichts, in Geany wird die Zeile verdoppelt, in gEdit die Zeile gelöscht, in Nano das nächste Zeichen gelöscht, Vim springt ans Dateiende und im Textterminal wird der Eingabestream mit einem EOF geschlossen :mrgreen:

schöni 27. Mai 2011 07:12

AW: Kryptographie
 
Zitat:

Zitat von idefix2 (Beitrag 1103165)
Wenn Du statt repeat Schleifen for-Schleifen verwenden würdest, wäre viel leichter zu durchschauen, was das Programm genau macht. So ist es extrem undurchsichtig, aber auch auf den zweiten Blick ist kein Fehler zu erkennen. Wenn Du uns verraten würdest, was das Programm falsch macht, könnte man Dir vielleicht eher helfen.

Zitat:

Zitat von rollstuhlfahrer
Also die erste Schleife kann man einsparen durch ein weiteres Delphi-Referenz durchsuchenStringReplace(). Ansonsten sind Fehler so gut wie nicht zu erkennen, da die Einrückung vor allem bei Schleifen nicht vorhanden ist.

Heißt das, das man mit einem möglichst komplex und undurchschaubar gehaltenen Programmabschnitt eine teure Software vor unerlaubter Verbreitung schützen kann, wenn der so komplex und undurchschaubar gehaltene Programmabschnitt zum Beispiel die Seriennummer versteckt (verschlüsselt) oder halt die Begrenzung der Testphase auf, sagen wir, 30 Tage?

Dann bräuchte man ja nur diese Programmteile in einer so undurchschaubar gehaltenen Programmschleife verstecken, um eine höchstmögliche Sicherheit zu erreichen, auch dann, wenn es natürlich eine absolute Sicherheit niemals geben kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz