Hallo,
Ich hab hier ein kleine Programm geschrieben in dem aus einer Datei ein text gelesen wird
und verschlüsselt, der verschlüsselte text soll dann in einer neuen text Datei rein Geschreiben werden.
FOLGENDES PROBLEM:
Mein Programm schreibt leider die verschlüsselten sachen nicht an die richtige stelle.
und es fehlt die funktion das die nachricht wieder entschlüsselt wird das heisst dass das Programm
die Buchstaben zählt und dann den abstand zwischen den häufigsten Buchstaben und dem 'e' ermittelt
und mit diesem schlüssel dann die Nachricht wieder zurück entschlüsselt.
für Lösungsvorschläge aller art wäre ich sehr dankbar da ich momentan echt auf dem schlauch stehe.
anbei is ein bild mit momentaner ausgabe und ausgabe wie es sein sollte.
Lg. Teepause.
Ich hab hier ein kleine Programm geschrieben in dem aus einer Datei ein text gelesen wird
und verschlüsselt, der verschlüsselte text soll dann in einer neuen text Datei rein Geschreiben werden.
FOLGENDES PROBLEM:
Mein Programm schreibt leider die verschlüsselten sachen nicht an die richtige stelle.
und es fehlt die funktion das die nachricht wieder entschlüsselt wird das heisst dass das Programm
die Buchstaben zählt und dann den abstand zwischen den häufigsten Buchstaben und dem 'e' ermittelt
und mit diesem schlüssel dann die Nachricht wieder zurück entschlüsselt.
für Lösungsvorschläge aller art wäre ich sehr dankbar da ich momentan echt auf dem schlauch stehe.
anbei is ein bild mit momentaner ausgabe und ausgabe wie es sein sollte.
Lg. Teepause.
C:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void caesarcipher(char *plaintext, int key){
int i = 0;
int cyphervalue;
char cypher;
FILE *fc;
fc = fopen("encrypted.txt", "w");
while (plaintext[i] != '\0' && strlen(plaintext) -1 > i){
if(plaintext[i] == ' '){
printf("%c", plaintext[i]);
fprintf(fc, "%c", plaintext[i]);
}else if(plaintext[i] == '.'){
printf("%c", plaintext[i]);
fprintf(fc, "%c", plaintext[i]);
}else if(plaintext[i] == '!'){
printf("%c", plaintext[i]);
fprintf(fc, "%c", plaintext[i]);
}else if(plaintext[i] == '?'){
printf("%c", plaintext[i]);
fprintf(fc, "%c", plaintext[i]);
}else if(plaintext[i] == ','){
printf("%c", plaintext[i]);
fprintf(fc, "%c", plaintext[i]);
}else{
cyphervalue = ((int)plaintext[i] - 97 + key) % 26 + 97;
if(cyphervalue == 92) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
else if(cyphervalue == 91) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
else if(cyphervalue == 93) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
else if(cyphervalue == 94) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
else if(cyphervalue == 95) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
else if(cyphervalue == 96) cyphervalue = (cyphervalue - 97 + 6) % 26 + 97;
cypher = (char)(cyphervalue);
printf("%c", cypher);
fprintf(fc, "%c", cypher);
}
i++;
}
}
int main(){
int d;
int key;
FILE *fc;
fc = fopen("encrypted.txt", "w");
printf("Schluessel: ");
fprintf(fc, "Schluessel: ");
scanf("%i", &key);
fprintf(fc, "%i\n", key);
while(getchar() != '\n');
while (key < 1 || key > 26) {
printf("Schluessel: ");
scanf("%i", &key);
while(getchar() != '\n');
}
FILE *fp;
char plaintext[256];
fp = fopen("decrypted.txt", "r");
for (d = 0; d < 4; d++) {
fgets(plaintext, 256, fp);
if(fp == NULL)
printf("Datei nicht gefunden.");
printf("\n\nKlartext: ");
fprintf(fc, "\nKlartext: ");
printf("%s", plaintext);
fprintf(fc, "%s", plaintext);
printf("Chiffrat: ");
fprintf(fc, "Chiffrat: ");
caesarcipher(plaintext, key);
}
return (0);
}