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