![]() |
Verschlüsselung mit dem Caesar Verfahren
Hallo zusammen.
Ich würde gerne ein Delphi Programm erstellen, bei dem der Benutzer einen mehrzeiligen Text eingeben kann. Dieser soll im Caesar Verfahren verschlüsselt und dem Benutzer ausgegeben werden. Dabei soll aber Groß- und Kleinschreibung, sowie Satzzeichen berücksichtigt werden. Mein Ansatz (bei dem nur Groß- und Kleinschreibung berücksichtigt ist):
Delphi-Quellcode:
Der Text wird aber immer in einer Zeile verschlüsselt, bzw. entschlüsselt und es werden keine Satzzeichen berücksichtigt.
procedure TForm1.BEntschluesselnClick(Sender: TObject);
var parameter, x, s, y: integer; alphabet, a: string; b: char; begin MAusgabe.Text:=''; alphabet:=MEingabe.Text; parameter:=Para.Value; for y:=1 to length(alphabet) do begin s:=ord(alphabet[y]); x:=s+parameter; if s<96 then if x>90 then b:=chr(x-26) else b:=chr(x); if s>96 then if x>122 then b:=chr(x-26) else b:=chr(x); a:=a+b end; MAusgabe.Lines.Add(a); end; procedure TForm1.BVerschluesselnClick(Sender: TObject); var parameter, x, s, y: integer; alphabet, a: string; b: char; begin MAusgabe.Text:=''; alphabet:=MEingabe.Text; parameter:=Para.Value; for y:=1 to length(alphabet) do begin s:=ord(alphabet[y]); x:=s-parameter; if s<96 then if x<65 then b:=chr(x+26) else b:=chr(x); if s>96 then if x<97 then b:=chr(x+26) else b:=chr(x); a:=a+b; end; MAusgabe.Lines.Add(a); end; Weiß jemand die Lösung meines Problems? Wie müssen die Zahlen geändert werden, damit alles berücksichtigt wird? MfG UdoVogel [edit=alcaeus]Delphi-Tags eingefuegt und Personality richtig gesetzt. In Zukunft bitte selbst machen, Danke. Mfg, alcaeus[/edit] |
Re: Verschlüsselung mit dem Caesar Verfahren
Delphi-Quellcode:
procedure TForm1.BVerschluesselnClick(Sender: TObject);
var parameter, x, s, y: integer; alphabet, a: string; b: char; begin MAusgabe.Text:=''; alphabet:=MEingabe.Text; parameter:=Para.Value; for y:=1 to length(alphabet) do begin s:=ord(alphabet[y]); if (s>=65) and (s<=90) then b:=chr((((s-65)+parameter) mod 26)+65); else if (s>=97) and (s<=122) then b:=chr((((s-97)+parameter) mod 26)+97); a=a+b; end; MAusgabe.Lines.Add(a); end; Das ist alles ungetestet und ich hab ewig nix mehr in Delphi geschrieben. Nutzung ist also auf eigene Gefahr und für etwaige Hirnschäden wird keine Haftung übernommen. Sollte vom Prinzip her aber stimmen. Gruß Jan |
Re: Verschlüsselung mit dem Caesar Verfahren
Sorry, aber das funktioniert nicht.
Wenn man einen Satz zB " Hallo wie gehts? " mit dem parameter 1 verschlüsselt und anschließend entschlüsselt, dann erhält man: " ÈȬ¬¯¯·©¥¥§¥¨´³³ " Aber trotzdem danke für deinen Ansatz. Gruß UdoVogel |
Re: Verschlüsselung mit dem Caesar Verfahren
Nein 100% hat es nicht geklappt, wie gesagt ewig nix mehr in delphi gemacht, aber mit ein wenig Eigeninitiative wäre man auf folgendes gekommen:
Delphi-Quellcode:
Und das ist sogar getestet, klappt also auch.
procedure TForm1.Button1Click(Sender: TObject);
var parameter, x, s, y: integer; alphabet, a: string; b: char; begin Memo1.Text:=''; alphabet:=Edit1.Text; parameter:=2; for y:=1 to length(alphabet) do begin s:=ord(alphabet[y]); if (s>=65) and (s<=90) then b:=chr((((s-65)+parameter) mod 26)+65) else if (s>=97) and (s<=122) then b:=chr((((s-97)+parameter) mod 26)+97) else b:=alphabet[y]; a:=a+b; end; Memo1.Lines.Add(a); end; Gruß Jan |
Re: Verschlüsselung mit dem Caesar Verfahren
Liste der Anhänge anzeigen (Anzahl: 1)
Ein etwas anderer Ansatz:
Delphi-Quellcode:
Grüße vom marabu
function EncodedStr(const text, abNormal, abCaesar: string): string;
var i, j: integer; begin SetLength(Result, Length(text)); for i := 1 to Length(text) do begin j := Pos(text[i], abNormal); if j = 0 then Result[i] := text[i] else Result[i] := abCaesar[j]; end; end; |
Re: Verschlüsselung mit dem Caesar Verfahren
marabu, du hast nen tritt in den hintern verdient. ich hab die letzten 5 minuten meines lebens damit verbracht, das zu machen, was du gemacht hast (ne saubere Methode zu schreiben) und dann war es umsonst... *grml*
|
Re: Verschlüsselung mit dem Caesar Verfahren
autsch...
@Udo: Willkommen im Forum. |
Re: Verschlüsselung mit dem Caesar Verfahren
@ Jan:
Weißt du, wie ich die Zahlen, bzw. Vorzeichen ändern muss, wenn ich auch einen Button zum Entschlüsseln einbauen will? Im Moment kann ich ja schlecht schaun, ob das wirklich funktioniert. @ Marabu & Nailor: Danke für eure alternative Methode, aber dafür reichen meine Delphi-Kenntnisse nicht aus. :wink: |
Re: Verschlüsselung mit dem Caesar Verfahren
Delphi-Quellcode:
Das ist entschlüsseln.
procedure TForm1.Button1Click(Sender: TObject);
var parameter, x, s, y: integer; alphabet, a: string; b: char; begin Memo1.Text:=''; alphabet:=Edit1.Text; parameter:=2; for y:=1 to length(alphabet) do begin s:=ord(alphabet[y]); if (s>=65) and (s<=90) then b:=chr((((s-65)+(26-parameter)) mod 26)+65) else if (s>=97) and (s<=122) then b:=chr((((s-97)+(26-parameter)) mod 26)+97) else b:=alphabet[y]; a:=a+b; end; Memo1.Lines.Add(a); end; Ich versteh aber nicht so ganz warum du das wissen willst. Musst du das als Hausaufgabe machen? Weil das war soo eine kleine Veränderung, wenn du dir das auch nur annähernd angesehen hättest wärste da auch selber drauf gekommen. Wofür machste das dann überhaupt, wenn du es dir selber nicht anschaust? Gruß Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:14 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 by Thomas Breitkreuz