AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verschlüsselung mit dem Caesar Verfahren

Verschlüsselung mit dem Caesar Verfahren

Ein Thema von UdoVogel · begonnen am 10. Jul 2005 · letzter Beitrag vom 10. Jul 2005
Antwort Antwort
UdoVogel

Registriert seit: 10. Jul 2005
3 Beiträge
 
#1

Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 16:23
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:
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;
Der Text wird aber immer in einer Zeile verschlüsselt, bzw. entschlüsselt und es werden keine Satzzeichen berücksichtigt.
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]
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 17:21
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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
UdoVogel

Registriert seit: 10. Jul 2005
3 Beiträge
 
#3

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 17:39
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
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 17:50
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:
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;
Und das ist sogar getestet, klappt also auch.

Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 18:16
Ein etwas anderer Ansatz:

Delphi-Quellcode:
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;
Grüße vom marabu
Angehängte Dateien
Dateityp: dpr caesar_190.dpr (2,5 KB, 13x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#6

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 18:21
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*
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 18:22
autsch...

@Udo: Willkommen im Forum.
  Mit Zitat antworten Zitat
UdoVogel

Registriert seit: 10. Jul 2005
3 Beiträge
 
#8

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 18:58
@ 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.
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Verschlüsselung mit dem Caesar Verfahren

  Alt 10. Jul 2005, 20:50
Delphi-Quellcode:
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;
Das ist entschlüsseln.

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
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 15:15 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