Zum Inhalt springen

Konsolenprogramm was mit Caeser verschlüsseln soll.


EyLex

Empfohlene Beiträge

Nabend liebe Commnunity,

ich hab da mal ein paar Fragen.

Ich wollte ein Programm schreiben, was nach dem Caeser Verfahren Texte verschlüsselt.

Jetzt habe ich aber ein paar Probleme, und zwar, wenn ich

a) möchte ich, dass nach z wieder bei a angefangen wird

B) das mit nicht nur mit einem Buchstaben verschlüsseln kann, sondern auch mit Worten.

Bis jetzt habe ich es auf verschiedene Wege probiert, zB eine if-Bedingung,

falls der ASCII Wert größer als 128 wieder auf 65 zurückrechnen usw...

Ich komme aber irgendwie kein bisschen vorran, er gibt immer nur komische Sonderzeichen aus.

Liegt es vielleicht an meinem Variablentypen, da ich nur char verwende?

Über eine konstruktive Antwort würde ich mich sehr freuen.

Liebe Grüße

Alex

Link zu diesem Kommentar
Auf anderen Seiten teilen

AFAIK hast Du beim Caesar-Algo ein Schlüsselalphabet, welches um einen festen Wert gegenüber dem Klartextalphabet verschoben worden ist:

ABCDEFGHIJKLMNOPQRSTUVWXYZ (Klartext)

FGHIJKLMNOPQRSTUVWXYZABCDE (Schlüssel)

Insofern, wäre es imho am einfachsten,

ein Array mit dem Schlüssel anzulegen, und je nach ASCII-Wert des Eingabezeichens, den Versatz gegenüber dem 0-Wert zu ermitteln und den entsprechenden Char im Schlüssel-Array zu nehmen.

Hier ein Beispiel für Uppercase:


#include "stdio.h"

#include "conio.h"


int main(int argc, char **argv)

{


	int i=0;


	char *Plain="FACHINFORMATIKER";

	char *Key="FGHIJKLMNOPQRSTUVWXYZABCDE";

	char Encrypted[256]; /* Cave! Encrypted muss natürlich so groß sein, dass auch der gesamte Klartext reinpasst */


	for (i=0; Plain[i]!='\0'; i++)

	{

		Encrypted[i]=Key[Plain[i]-'A'];

	}


	Encrypted[i]='\0';


	printf("%s", Encrypted);

	getch();


	return 0;

}


Erklärung:
Encrypted[i]=Key[Plain[i]-'A'];

Plain ergibt den ASCII-Wert des iten Zeichens des Plaintextes.

'A' ergibt den ASCII-Wert vom großen "A", also 65.

Folglich ergibt Plain-'A' einen Wert zwischen 0 und 25.

Key[WERT]; mit 0<=Wert<=25 ergibt dann das Element an der Stelle Wert im Feld Key.

So hast Du ein Mapping von Plain nach Encrypted, was der einfachen Caesar-Chiffre entspricht. Das ist doch schonmal eine prima Grundlage, von der ausgehend Du weitermachen kannst ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...