Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Caesar-Entschlüsselung funktioniert nicht :-(


Leuchtturm - Di 01.01.08 18:43
Titel: Caesar-Entschlüsselung funktioniert nicht :-(
Hi,
ich habe ein Simples Programm geschrieben womit man Text mit der Caesarverschlüsselung verschlüsseln und entschlüsseln (sollen) kann.
Die Verschlüsselung funktioniert einwandfrei :D
Die Entschlüsselung leider nicht :? :
Der Code läuft in einer Schleife, so oft bis der gesamte Text abgearbeitet ist

Versuch
1:
2:
3:
int ascii = (int)Zeichen;
klartextzeichen =  (97 - ascii - Schluessel) % 26;
Klartext += (char)klartextzeichen;

ascii ... ascii - Zeichen
klartextzeichen ... Zeichen im klartext
Klartext ... gesamter Klartext

Da kommt aber nur Mist raus.
Wie müsste man es anders machen damit man den richtigen Text rausbekommt?
Vielen Dank im voraus :zustimm:
mfG
Leuchtturm :wave:


Chryzler - Di 01.01.08 19:10

1. Falsche Sparte! :mahn:
2. Müssen da nicht Klammern hin?

C#-Quelltext
1:
klartextzeichen =  (97 - (ascii - Schluessel)) % 26;                    


Kha - Di 01.01.08 19:22

user profile iconLeuchtturm hat folgendes geschrieben:

Versuch
1:
klartextzeichen =  (97 - ascii - Schluessel) % 26;                    
"- ascii"? Wird das ein revertierter Cäsar oder wie oder was :gruebel: ?
Einen stinknormalen Cäsar für Kleinbuchstaben würde ich jedenfalls einfach so machen:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
public static char Encrypt(char c, int rot)
{
  return (char)((c - 'a' + rot + 26) % 26 + 'a'); // +26 simuliert das "mathematische mod"
}

static void Main(string[] args)
{
  int rot = int.Parse(Console.ReadLine());
  char[] crypt = Console.ReadLine().ToCharArray().Select(c => Encrypt(c, rot)).ToArray();
  Console.WriteLine(new string(crypt));
  Console.WriteLine(new string(crypt.Select(c => Encrypt(c, -rot)).ToArray()));

  Console.ReadLine();
}


[edit] Decrypt-Methode entfernt *g* . [/edit]


Tarry - Di 01.01.08 19:46

Benutze bitte die Suche.
Hier [http://www.delphi-forum.de/viewtopic.php?p=480531#480531] findest du z.B. mehrere funktionierende Codes.

Gruß
Tarry


Leuchtturm - Mi 02.01.08 11:32

Danke funktioniert :zustimm: