Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Konsolenprogramm was mit Caeser verschlüsseln soll.

Empfohlene Antworten

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

Relevanter Code könnte hilfreich sein ;) Ich zumindest könnte nur raten, was aber wahrscheinlich wenig konstruktiv wäre.

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

Großbuchtaben besitzen ASCII-Werte von 65 bis 90, Kleinbuchstaben 97 bis 122.

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 ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.