Caeser-Verschlüsslung
-
Guten Abends zusammen,
ich bin neu hier. Ich habe sehr wenig Erfahrung mit der C-Programmierung und habe nun die Aufgabe bekommen eine C-Programmierung zur Caeser-Verschlusslung zu schreiben.
Dabei soll die " Verschiebung" vom Anwender angegeben werde. Zb, wenn der Anwender 2 eingibt soll aus ABC = CDE werden.Ich habe im Internet rumgegoogelt, doch das Problem ist, dass ich kaum Erfahrung habe und wenig davon verstehe.
Mir wäre es sehr hilfreich, wenn mir jmd bisschen Tipps geben würde mit bisschen Erklärung.
Danke im Voraus
-
Ich würde zu Beginn mal der Einfachheit halber nur entweder alles Grossbuchstaben oder alles Kleinbuchstaben verwenden, also A-Z oder a-z.
Diese einzelnen Buchstaben speicherst du dann alphabetisch geordnet in einem char-Array.
Cäsar funktioniert ja durch einfache Verschiebungen, Der Schlüssel kann eine Zahl von 1-26 sein. Wenn du den Schlüssel s hast und im Klartext einen Buchstaben mit Index i, dann ergibt sich der Krypto-Buchstabe k aus folgendem:
k = (i + s) mod 26;Den Text, den du verschlüsseln möchtest speicherst du in C in einem char Array. Dann gehst du mit einer for-Schleife durch den ganzen char-Array und verschlüsselst jeden Buchstaben einzeln mit oben gegebener Formel.
*Edit
Ist das Problem denn das Verständnis von Cäsar oder hauptsächlich das programmieren in C?
-
Wenn wir mal davon ausgehen, dass die Zeichen ASCII codiert sind, dann ist ein üblicher Ansatz, einfach die Verschiebung auf jedes Zeichen drauf zu addieren (in C kann man mit Zeichen rechnen!). Dabei natürlich nicht vergessen, am Ende bei Z umzubrechen, der modulo-Operator eignet sich gut dafür.
Das packst du dann in ein schönes Progrämmchen: Zeichenkette einlesen, dann die Zeichenkette in einer Schleife durchgehen und jedes Zeichen wie oben beschreiben behandeln. Das Ergebnis dann entweder irgendwo speichern oder sofort ausgeben, je nach Bedarf.
-
Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C (C89 und C99) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.