![]() |
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^^ |
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: ![]() Bacon-Code ist auch einfach umzusetzen. |
AW: Ich brauche Inspiration :)
Ein aussagekräftiger Threadtitel wäre auch schön. "Cäsar Verschlüsselung erweitern" oder so was.
|
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? ^^ |
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 |
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 |
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:
EDIT: Hat er sich erledigt >.< habe beim Ausführen der Funktion, die beiden Parameter vertauscht
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; |
AW: Caesar-Chiffre erweitern
Delphi-Quellcode:
Und warum nicht:
//1 ist für den Klartext, 2 für den Schlüsseltext, 3 für den Geheimtext,
* StringToEncrypt * StringToDecrypt * KeyString Oder * PlainText * EncryptedText * Key :roll: |
AW: Caesar-Chiffre erweitern
Delphi-Quellcode:
hier ist dann wohl der Fehler. Du musst wie du ja selber kommentierst die Länge der Strings vergleichen:
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 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. |
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