C :: Aufgabe #23
2 Lösungen
Mit Caesar Chiffre ent- und verschlüsseln
Anfänger - C
von Dome
- 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.
Konsolenausgabe:
Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu
Lösungen:
/********************************************
* caesar.c Caesar-Chiffre
*
* OS : GNU/Linux
* compile: gcc -Wall -o caesar caesar.c
*
* devnull 14-07-2013
********************************************/
#include <stdio.h>
#define BUFLEN 1000
int caesar( int c, int rot )
{
if (c>='A' && c<='Z') c=(c-'A'+rot)%26+'A';
else if (c>='a' && c<='z') c=(c-'a'+rot)%26+'a';
else if (c>='0' && c<='9') c=(c-'0'+rot)%10+'0';
return c;
}
int main()
{
char text[BUFLEN+1];
char *p=text;
int rot;
printf("Texteingabe: ");
if (fgets(text,BUFLEN,stdin)) {
text[BUFLEN]='\0';
printf("Verschiebung: ");
scanf( "%d",&rot );
while(*p) { *p=caesar(*p,rot); p++; }
printf("Chiffretext: %s\n",text);
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#define MAX 30
int main(void)
{
char eingabe[MAX], verschluesselt[MAX];
int i, verschiebung, groesse;
printf("Bitte gebe den Satz ein, welcher verschlüsselt werden soll: \n");
fgets(eingabe,MAX,stdin);
printf("Bitte gebe die Verschiebung ein: \n");
if (scanf("%d", &verschiebung)!=1) {
printf("Falsche Eingabe.\n");
return EXIT_FAILURE;
}
//verschlüsseln
for(i=0;i<MAX;i++) {
verschluesselt[i] = (char)(((int)eingabe[i])+verschiebung);
}
//Ausgabe
printf("Satz nach der Verschlüsselung: \n");
for(i=0;i<MAX;i++) {
printf("%c",verschluesselt[i]);
}
printf("\n");
return EXIT_SUCCESS;
}
