1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define TAILLE 500
void cryptage();
void decryptage();
int main() {
int rep;
printf("Entrez le chiffre corespondant a votre choix:\n");
printf(" 1 . CRYPTAGE.\n");
printf(" 2 . DECRYPTAGE.\n");
scanf("%d", &rep);
switch(rep) {
case 1 :
cryptage();
break;
case 2 :
decryptage();
break;
default:
printf("Erreur de choix, relancer le programme.\n");
}
system("pause");
return 0;
}
void cryptage() {
char chaine[TAILLE] = {0};
int cle, nb_car, cod, i=0, c;
FILE* fichier_c = NULL; // fichier qui va contenir le message crypté.
char *p = NULL;
fichier_c = fopen("Message.txt", "w");
fputs("Message:\n\n", fichier_c);
printf("Entrer le message a crypter:\n");
fgets(chaine, TAILLE, stdin);
p = strchr(chaine, '\n');
if (p == NULL) {
printf("ERREUR");
while((c = getchar()) != EOF && c != '\n');
}
do {
printf("Entrer la cle de cryptage: nombre positif < 256.\n");
scanf("%d", &cle);
} while((cle > 255) || (cle < 1));
nb_car = strlen(chaine);
fprintf(fichier_c, "%d ", nb_car); /* J'inscris le nombre de caractères dans
le fichier pour le connaitre au moment du
decryptage (il me servira dans ma boucle
de decryptage). */
while (i < nb_car) {
cod = chaine[i] ^ cle; // Je me sert du XOR pour trouver la valeur de cod.
fprintf(fichier_c, "%d ", cod);
i++;
}
fputs("//", fichier_c); // Ca ne sert à rien.
fclose(fichier_c);
printf("Fin du cryptage.\n");
}
void decryptage() {
int cle, nb_car, cod, decod, i=0;
FILE* fichier_c = NULL; // message crypté.
FILE* fichier_d = NULL; // message decrypté.
fichier_c = fopen("Message.txt", "r");
if (fichier_c == NULL) {
printf("Message crypte non trouve.\n");
printf("Fin du programme.\n");
system("pause");
exit(0);
}
fichier_d = fopen("Message_clair.txt", "w");
printf("Entrer la cle de decryptage:\n");
scanf("%d", &cle);
fputs("Message clair:\n\n", fichier_d);
fseek(fichier_c, 9, SEEK_SET); /* Le "curseur" se place dans le fichier a decrypté,
la ou se trouve le nombre de caractères du message
qui est suivi par le debut du message codé. */
fscanf(fichier_c, "%d", &nb_car);// nb_car prend le nombre de caractères.
while(i < nb_car) {
fscanf(fichier_c, "%d", &cod);
decod = cod ^ cle; // XOR pour retrouver le caractère de départ.
fprintf(fichier_d, "%c", decod);
i++;
}
printf("Fin du decryptage.\n");
fclose(fichier_c);
fclose(fichier_d);
} |
Partager