Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Caesar-Chiffre erweitern (https://www.delphipraxis.net/188319-caesar-chiffre-erweitern.html)

Rudinii 19. Feb 2016 18:34


Caesar-Chiffre erweitern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
Ich (9te Klasse) suche nach etwas Inspiration für mein kleines "Caesar-Chiffre-Programm" :) Im Rahmen von Delphi besprechen wir momentan die Kryptographie (deshalb das Programm).
Nun möchte ich ein paar weitere Funktionen hinzufügen, weiß jedoch nicht was. Falls ihr mir Vorschläge machen könntet wäre das super.
Solange es nicht zu tief in Delphi hineingeht und auf Google zu finden ist, ist alles okay.
Eventuell könnt ihr mir auch Verbesserungsvorschläge machen, Quellcode hänge ich an^^
Gemacht ist das Ganze mit Delphi 7, keine Ahnung ob das wichtig ist...
Danke im Vorraus :)

P.S.: Tut mir Leid wenn die Variablen-Namen etwas wirr sind, ich bin noch ein Anfänger^^

Luckie 19. Feb 2016 19:18

AW: Ich brauche Inspiration :)
 
Oh. Das ist einfach. Wenn du schon Cäsar hast, dann ist es zur Vignere nur ein kleiner Schritt. Der Text wird mit einem Schlüssel Cäsar verschlüsselt. Der Schlüssel gibt die Verschiebung für jeden Buchstaben des Spruches vor.

Beispiel
Schlüssel: fghtr
Der erste Buchstabe des Spruches wird mit A = F verschlüsselt. Der zweite mit A = G. Der dritte mit A = H usw.

Und guck mal hier: http://www.cryptool-online.org/

Bacon-Code ist auch einfach umzusetzen.

Luckie 19. Feb 2016 19:22

AW: Ich brauche Inspiration :)
 
Ein aussagekräftiger Threadtitel wäre auch schön. "Cäsar Verschlüsselung erweitern" oder so was.

Rudinii 20. Feb 2016 11:25

AW: Caesar-Chiffre erweitern
 
Okay vielen Dank erstmal für die Idee mit der Vigenere-Verschlüsselung.
Ich hatte überlegt beides in ein Programm zu packen und über eine Art Menü auswählbar zu machen.
Das 2te Formular habe ich bereits erstellt jedoch habe ich ein Problem. Wie "verknüpfe" ich die beiden? Ich weiß dass ich irgendetwas unter "Uses" schreiben muss...
Aber was und wie? ^^

Klaus01 20. Feb 2016 11:44

AW: Caesar-Chiffre erweitern
 
.. warum ein zweites Formular?

Das Formular mit Klartexteingabe und Cypherausgabe bleibt doch in beiden Fällen gleich.
Der Unterschied liegt doch nur in der Art der Verschlüsselung.

Grüße
Klaus

Rudinii 20. Feb 2016 11:46

AW: Caesar-Chiffre erweitern
 
Stimmt das habe ich nicht bedacht, ich hatte überlegt das ich pro Verschlüsselungsart ein Formular habe und mithilfe eines Menüs (3tes Formular) dazwischen wechsle
Kann man einzelne Elemente verschwinden lassen? Und wenn ja wie? Denn dann füge ich einen Button hinzu der das "Knacken-Feld" verschwinden lässt, wenn man dann mit Vigenere verschlüsseln möchte

EDIT: Habs gefunden, Button1.visible := false

Rudinii 21. Feb 2016 16:50

AW: Caesar-Chiffre erweitern
 
Sorry für den Spam aber ich habe ein Problem mit der Vigenere Verschlüsselung, sie funktioniert irgendwie absolut nicht so wie es soll. Kann mal jemand meiner Verschlüsselungsfunktion durchgucken und mir sagen wo mein Denkfehler liegt? ;(
Delphi-Quellcode:
function VigenereVerschluesseln(textInput:string; ViKey: String): String;
var
h,i:integer; //Zählvariable
tempForEncrypt1,tempForEncrypt2,tempForEncrypt3:Integer; //1 ist für den Klartext, 2 für den Schlüsseltext, 3 für den Geheimtext,

begin
SetLength(Result, Length(textInput));
textInput := UpperCase(textInput); //Hier wird der Text zu Großbuchstaben gemacht, da nicht zwischen klein und groß unterschieden wird
ViKey := UpperCase(ViKey);

for h := 1 to Length(ViKey) do
begin
if not (ViKey[h] in ['A'..'Z']) then
    raise Exception.CreateFmt('Schlüssel ungültig.', [ViKey]); //Falls der Schlüssel kein Buchstabe ist gibts nen Fehler
end;
repeat
ViKey := ViKey + ViKey;
until ViKey > textInput; //Das schlüsselwort wird solange hintereinandergesetzt bis es länger ist als der Klartext
                          // "ÜBerschuss" hier egal da die spätere Schleife vom Klartext ausgeht
for i := 1 to Length(textInput) do
begin
if textInput[i] in ['A'..'Z'] then
begin
tempForEncrypt1 := ord(textInput[i])-(ord('A')); //Stelle im Alphabet vom Klartextbuchstaben
tempForEncrypt2 := ord(ViKey[i])-(ord('A')); //Stelle im Alphabet vom Schlüsseltextbuchstaben
tempForEncrypt3 := (tempForEncrypt1 + tempForEncrypt2) mod 26; //Stelle im ALphabet des Geheimtextbuchstaben
Result[i] := chr(tempForEncrypt3 + (ord('A'))); //Erstmal die Stelle in der Ascitabelle ausrechnen, dann den passendeb Buchstaben als Ergebnis festlegen
end
else
begin Result[i] := textInput[i];
end;
end;


end;
EDIT: Hat er sich erledigt >.< habe beim Ausführen der Funktion, die beiden Parameter vertauscht

Luckie 21. Feb 2016 17:59

AW: Caesar-Chiffre erweitern
 
Delphi-Quellcode:
//1 ist für den Klartext, 2 für den Schlüsseltext, 3 für den Geheimtext,
Und warum nicht:
* StringToEncrypt
* StringToDecrypt
* KeyString
Oder
* PlainText
* EncryptedText
* Key

:roll:

Jumpy 22. Feb 2016 10:33

AW: Caesar-Chiffre erweitern
 
Delphi-Quellcode:
until ViKey > textInput; //Das schlüsselwort wird solange hintereinandergesetzt bis es länger ist als der Klartext
                          // "ÜBerschuss" hier egal da die spätere Schleife vom Klartext ausgeht
hier ist dann wohl der Fehler. Du musst wie du ja selber kommentierst die Länge der Strings vergleichen:

until Length(ViKey) > Length(textInput);

Ansonsten möchte ich die Anmerkungen von Lucky bezüglich sprechender Variablen-Namen nochmal betonen. So sparst du die einen großen Teil der Kommentare.

Du könntest dir auch das "initialisieren" des Results sparen (Setlength(Result),...)) wenn du weiter unten mit Result:=Result+chr(tempForEncrypt3 + (ord('A'))); o.ä. arbeitest.

Rudinii 22. Feb 2016 18:18

AW: Caesar-Chiffre erweitern
 
Wie gesagt bin noch Anfänger :lol:
Trotzdem danke :) Hab es inzwischen hinbekommen


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 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