AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Verschlüsselung bzw. Entschlüsselung will nicht gelingen
Thema durchsuchen
Ansicht
Themen-Optionen

Verschlüsselung bzw. Entschlüsselung will nicht gelingen

Ein Thema von Faffy · begonnen am 25. Jan 2014 · letzter Beitrag vom 27. Jan 2014
Antwort Antwort
Seite 1 von 3  1 23      
Faffy

Registriert seit: 25. Jan 2014
10 Beiträge
 
#1

Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 16:23
Hey folks,

folgendes Problem beschäftigt mich nun bereits seit einigen Tagen.
Ich habe versucht ein Programm zu schreiben, welches individuell gewählte Worte verschlüsselt, indem man jeden Buchstaben des zu verschlüsselnden Wortes und einen gewissen Wert verschiebt. Die Verschlüsselung an sich funktioniert auch reibungsfrei, jedoch die Entschlüsselung soll das Wort wiederherstellen. Wenn ich den Button für die Entschlüsselung jedoch betätige, so bleibt das Feld leer. Ich habe einmal vor dem Betätigen des Buttons etwas in das Edit-Feld hinein geschrieben, in das der entschlüsselte Text eingefügt werden soll. Lustiger Weise wird alles, was sich in dem Feld befindet einfach gelöscht.

Hier einmal die Procedure des Buttons:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var T, TN : String;
     Z : Integer;
begin
   T := Edit2.Text; // T = Verschlüsselter Text, der entschlüsselt werden soll
   Z := 7; // Z = Wert, um den der Buchstabe verschoben wird
   C.B(TN,T,Z); // C = Klasse TCaesar (Global deklariert), B = Methode zur Entschlüsselung
   Edit3.Text := TN; // TN = Neuer, entschlüsselter Text
end;


Und hier die Procedure der Entschlüsselungsmethode:
Delphi-Quellcode:
Procedure TCaesar.B (Var T : String; T2 : String; Z : Integer);
Var
 P, Code : Integer; // P = Länge des Wortes, Code = Verschlüsselungscode
 B : String; // B = Buchstabe des Wortes
 B2 : Char; // B2 = Verschobener Buchstabe
Begin
For P := 1 to Length(T) Do
                                Begin
                                  B := Copy(T,P,1);
                                    Code := ORD(B[1]);
                                    Code := Code + Z;
                                    If (Code < 122) Then
                                                     Code := Code + 26;
                                    B2 := Char(Code);
                                    T2 := T2 + B2;
                                End;
                                End;

Ich hoffe ihr werdet mir helfen können.
Gruß
Faffy
  Mit Zitat antworten Zitat
Insider2004
(Gast)

n/a Beiträge
 
#2

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 16:41
Wieso machst Du Dir Dein Leben so schwer? Schau mal auf Deinen Code. Deiner grünen Kommentare sind länger als der Programmcode. Guter Code braucht keine Kommentare. Benenne Deine Variablen erst mal gescheit.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 16:53
Innerhalb deine Entschlüsselungsmethode hast du die Bedeutung von T und T2 vertauscht.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Faffy

Registriert seit: 25. Jan 2014
10 Beiträge
 
#4

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 17:03
Ah, mir ist aufgefallen, was mein Fehler war.. Ich habe den Quelltext jetzt ein wenig überarbeitet, sodass folgendes entstanden ist:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var T, TN : String;
     Z : Integer;
begin
   T := Edit2.Text; // T = Verschlüsselter Text, der entschlüsselt werden soll
   Z := 7; // Z = Wert, um den der Buchstabe verschoben wird
   C.B(TN,T,Z); // C = Klasse TCaesar (Global deklariert)
   Edit3.Text := TN; // TN = Neuer, entschlüsselter Text
end;


Und für die Methode:
Delphi-Quellcode:
Procedure TCaesar.B (Var T2 : String; T : String; Z : Integer);
Var
 P, Code : Integer; // P = Länge des Wortes, Code = Verschlüsselungscode
 B : String; // B = Buchstabe des Wortes
 B2 : Char; // B2 = Verschobener Buchstabe
Begin
For P := 1 to Length(T) Do
                                Begin
                                  B := Copy(T,P,1);
                                    Code := ORD(B[1]);
                                    Code := Code + Z;
                                    If (Code < 122) Then
                                                     Code := Code - 26;
                                    B2 := Char(Code);
                                    T2 := T2 + B2;
                                End;
                                End;
Nun entschlüsselt er auch, jedoch wird nicht das entschlüsselt, was entschlüsselt werden soll. Er gibt nicht den Ausgangsbegriff wieder raus, sondern etwas völlig anderes. Aus "ttt" wird "MMM".
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 17:16
Dann zeig doch mal die Verschlüsselung...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Faffy

Registriert seit: 25. Jan 2014
10 Beiträge
 
#6

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 17:57
Ich lege einfach mal alles genauer dar.

Verschlüsselungsbutton:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var T,T2 : String;
    Z : Integer;

begin
  T := Edit1.Text;
  Z:= 7;
  C.A(T,T2,Z);
  Edit2.Text := T2;
end;
Verschlüsselungsmethode:
Delphi-Quellcode:
Procedure TCaesar.A (T : String; Var T2 : String; Z : Integer); // T = Zu verschlüsselndes Wort, T2 = Verschlüsseltes Wort, Z = Irrelevant (Zahl, um die verschoben wird, ist aber nicht angegeben)
Var
 P, Code : Integer; // P = Länge des Wortes, Code = Verschlüsselungscode
 B : String; // B = Buchstabe des Wortes
 B2 : Char; // B2 = Verschobener Buchstabe
Begin
For P := 1 to Length(T) Do
                                Begin
                                  B := Copy(T,P,1);
                                    Code := ORD(B[1]);
                                    Code := Code - Z;
                                    If (Code > 122) Then
                                                     Code := Code - 26;
                                    B2 := Char(Code); // B2 = Verschlüsselter Buchstabe
                                    T2 := T2 + B2; // T2 = Verschlüsselter Text
                                End;
                                End;
Entschlüsselungsbutton:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var T, TN : String;
     Z : Integer;
begin
   T := Edit2.Text; // T = Verschlüsselter Text, der entschlüsselt werden soll
   Z := 7; // Z = Wert, um den der Buchstabe verschoben wird
   C.B(TN,T,Z); // C = Klasse TCaesar (Global deklariert)
   Edit3.Text := TN; // TN = Neuer, entschlüsselter Text
end;
Entschlüsselungsmethode:
Delphi-Quellcode:
Procedure TCaesar.B (Var T2 : String; T : String; Z : Integer);
Var
 P, Code : Integer; // P = Länge des Wortes, Code = Verschlüsselungscode
 B : String; // B = Buchstabe des Wortes
 B2 : Char; // B2 = Verschobener Buchstabe
Begin
For P := 1 to Length(T) Do
                                Begin
                                  B := Copy(T,P,1);
                                    Code := ORD(B[1]);
                                    Code := Code + Z;
                                    If (Code < 122) Then
                                                     Code := Code + 26;
                                    B2 := Char(Code);
                                    T2 := T2 + B2;
                                End;
                                End;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#7

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 18:13
Das sind doch die relevanten Stellen:

Delphi-Quellcode:
  Code := Code - Z;
  If (Code > 122) Then
    Code := Code - 26;
Delphi-Quellcode:
  Code := Code + Z;
  If (Code < 122) Then
    Code := Code + 26;
Überleg dir mal, warum bei der Verschlüsselung die IF-Abfrage kommt und was sie bewirkt. Dann überleg mal, wie dieser Vorgang rückgängig gemacht werden muss. Dann siehst du auch, was bei der Enschlüsselung falsch läuft.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
DayDreamer87

Registriert seit: 25. Feb 2012
2 Beiträge
 
#8

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 25. Jan 2014, 18:17
Das sind doch die relevanten Stellen:

Delphi-Quellcode:
  Code := Code - Z;
  If (Code > 122) Then
    Code := Code - 26;
Delphi-Quellcode:
  Code := Code + Z;
  If (Code < 122) Then
    Code := Code + 26;
Überleg dir mal, warum bei der Verschlüsselung die IF-Abfrage kommt und was sie bewirkt. Dann überleg mal, wie dieser Vorgang rückgängig gemacht werden muss. Dann siehst du auch, was bei der Enschlüsselung falsch läuft.
Ich bin in der Materie zwar noch relativ neu und, sofern falsch, beachtet mich gar nicht...

Aber nachdem ich das ganze mal nachgebastelt habe, funktionierts nu bei mir
Fehler dürfte das im Zitat rot markierte Zeichen sein.

Hoffe mal, dass mein erster Beitrag korrekt ist.

Grüße

Day

Edit: Farbige Markierungen im Delphi Code funktionieren nicht...
In Prozedur B:
If (Code > 122) Then ... so funktionierts
  Mit Zitat antworten Zitat
Faffy

Registriert seit: 25. Jan 2014
10 Beiträge
 
#9

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 26. Jan 2014, 00:26
Perfekt, vielen Dank. Jetzt funktioniert es echt wunderbar, ihr habt mir sehr geholfen.

Eine Frage hätte ich jedoch noch, da mir das nicht ganz klar ist.
Warum muss bei Procedure A
Procedure TCaesar.A (T : String; Var T2 : String; Z : Integer); Das "Var T2 : String" hinter "T : String;" stehen und bei Procedure B

Procedure TCaesar.B (Var T2 : String; T : String; Z : Integer); das "Var T2 : String;" eben am Anfang?

Geändert von Faffy (26. Jan 2014 um 00:36 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Verschlüsselung bzw. Entschlüsselung will nicht gelingen

  Alt 26. Jan 2014, 00:58
Schau mal auf Deinen Code. Deiner grünen Kommentare sind länger als der Programmcode. Guter Code braucht keine Kommentare. Benenne Deine Variablen erst mal gescheit.
Das kann ich nur unterstützen!!
Variablen- und Funktionsnamen dürfen wirklich mehr als ein oder zwei Buchstaben lang sein.
Die Zeiten von Sharp Taschenrechner mit ihrem Basic-Dialekt sind lange vorbei.
fork me on Github
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:06 Uhr.
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