Version finale
This commit is contained in:
		@@ -1,5 +1,5 @@
 | 
			
		||||
run : codage.o decodage.o code.o generate.o
 | 
			
		||||
	gcc -o run codage.o decodage.o code.o generate.o
 | 
			
		||||
code : codage.o decodage.o code.o generate.o
 | 
			
		||||
	gcc -o code codage.o decodage.o code.o generate.o
 | 
			
		||||
 | 
			
		||||
codage.o : codage.c
 | 
			
		||||
	gcc -o codage.o -c codage.c
 | 
			
		||||
@@ -14,4 +14,4 @@ generate.o : generate.c
 | 
			
		||||
	gcc -o generate.o -c generate.c
 | 
			
		||||
 | 
			
		||||
clean :
 | 
			
		||||
	rm -f *.o
 | 
			
		||||
	rm -f *.o -f code
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
ixbvhdkevteiludzxvpsnpcp
 | 
			
		||||
ewdxtsjgwhkpybfnthzfibqx
 | 
			
		||||
@@ -3,13 +3,6 @@
 | 
			
		||||
	On ecrit un programme qui à partir d'un fichier message et 
 | 
			
		||||
	d'un fichier clé produira un fichier message_code
 | 
			
		||||
*/
 | 
			
		||||
	
 | 
			
		||||
/* 
 | 
			
		||||
	1. La méthode la plus simple les noms de fichiers sont connus
 | 
			
		||||
	2. On demande le nom des fichiers à l'utilisateur
 | 
			
		||||
	3. Les noms de fichiers sont passés en paramètres sur le ligne de commande
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
@@ -24,17 +17,31 @@ int codage(int argc, char *argv[]) {
 | 
			
		||||
	int k1;
 | 
			
		||||
	int calcul;
 | 
			
		||||
	
 | 
			
		||||
	//	Ouverture des fichiers et vérification d'erreurs d'ouverture
 | 
			
		||||
	
 | 
			
		||||
	char * cheminFic_m = argv[2];
 | 
			
		||||
	f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
	/* Traitement erreur */
 | 
			
		||||
	 char * cheminFic_k = argv[3];
 | 
			
		||||
	if (f_m==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_k = argv[3];
 | 
			
		||||
	f_k = fopen(cheminFic_k, "r");
 | 
			
		||||
	/* Traitement erreur */
 | 
			
		||||
	if (f_k==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_mc = argv[4];
 | 
			
		||||
	f_mc = fopen(cheminFic_mc, "w");
 | 
			
		||||
	/* Traitement erreur */
 | 
			
		||||
	
 | 
			
		||||
	if (f_mc==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	//	Boucle : calcul permettant de coder un caractère puis l'écrire dans le 
 | 
			
		||||
	//	fichier f_m
 | 
			
		||||
	while ((c = fgetc(f_m)) != EOF)
 | 
			
		||||
	{
 | 
			
		||||
		k1 = fgetc(f_k);
 | 
			
		||||
@@ -42,7 +49,7 @@ int codage(int argc, char *argv[]) {
 | 
			
		||||
		fputc(calcul, f_mc);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	//	Fermeture des fichiers
 | 
			
		||||
	fclose(f_m);
 | 
			
		||||
	fclose(f_k);
 | 
			
		||||
	fclose(f_mc);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										51
									
								
								prgm/code.c
									
									
									
									
									
								
							
							
						
						
									
										51
									
								
								prgm/code.c
									
									
									
									
									
								
							@@ -1,40 +1,53 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "fonctions.h"
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
	FILE *f_m, *f_k, *f_mc; /* strcutures permettant, une fois FOPEN 
 | 
			
		||||
	exécuté de recupérer des informations pour manipuler les fichiers
 | 
			
		||||
	en C */
 | 
			
		||||
	int c, count=0;
 | 
			
		||||
	char * cheminFic_m = argv[2];
 | 
			
		||||
	int c,count=0;
 | 
			
		||||
	
 | 
			
		||||
	f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
	if(f_m==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		return EXIT_FAILURE;
 | 
			
		||||
	}
 | 
			
		||||
	for (c = getc(f_m); c != EOF; c = getc(f_m))
 | 
			
		||||
	{
 | 
			
		||||
        count = count + 1;
 | 
			
		||||
	}
 | 
			
		||||
	generate(count, argc, argv);
 | 
			
		||||
    //fclose(f_m);
 | 
			
		||||
 | 
			
		||||
	/* recupération sur la ligne de commande des noms de fichiers et option (-c pour 
 | 
			
		||||
		codage, -d pour décodage) : message cle message_calculé 
 | 
			
		||||
	
 | 
			
		||||
	/* recupération sur la ligne de commande des noms de fichiers et option (-c pour codage
 | 
			
		||||
		-d pour décodage : message cle message_calculé 
 | 
			
		||||
	
 | 
			
		||||
	code -c f1 f2 f3
 | 
			
		||||
	code -d f1 f2 f3
 | 
			
		||||
	./code -c f1 f2 f3
 | 
			
		||||
	./code -d f1 f2 f3
 | 
			
		||||
	
 | 
			
		||||
	*/
 | 
			
		||||
	if(argv[1]=="-c")
 | 
			
		||||
 | 
			
		||||
	//	Si l'option donnée en premier argument est "-c", alors on génère une clé 
 | 
			
		||||
	//	aléatoirement et on code le message avec
 | 
			
		||||
	if(strcmp(argv[1], "-c")==0)
 | 
			
		||||
	{
 | 
			
		||||
		//	Parcours le fichier du message à coder pour connaitre le nombre de caractères présents.
 | 
			
		||||
		f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
		if(f_m==NULL)
 | 
			
		||||
		{
 | 
			
		||||
			return EXIT_FAILURE;
 | 
			
		||||
		}
 | 
			
		||||
		for (c = getc(f_m); c != EOF; c = getc(f_m))
 | 
			
		||||
		{
 | 
			
		||||
		    count = count + 1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Génère une clé aléatoire
 | 
			
		||||
		generate(count, argc, argv);
 | 
			
		||||
 | 
			
		||||
		//	Code le message
 | 
			
		||||
		codage(argc, argv);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	else if(argv[1]=="-d")
 | 
			
		||||
	/*	Si l'option donée en premier argument est "-d", alors on décode le message
 | 
			
		||||
		donné en 2eme argument en mettant le résultat dans un nouveau fichier nommé 
 | 
			
		||||
		en 4eme argument
 | 
			
		||||
	*/
 | 
			
		||||
	else if(strcmp(argv[1], "-d")==0)
 | 
			
		||||
	{
 | 
			
		||||
		//	Décode le message codé
 | 
			
		||||
		decodage(argc, argv);
 | 
			
		||||
	}
 | 
			
		||||
	return EXIT_SUCCESS;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,3 +1,9 @@
 | 
			
		||||
/* 
 | 
			
		||||
			Decodage du message 
 | 
			
		||||
	On ecrit un programme qui à partir d'un fichier message_code et 
 | 
			
		||||
	d'un fichier clé produira un fichier message_decode
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 | 
			
		||||
@@ -9,24 +15,32 @@ int decodage(int argc, char *argv[]) {
 | 
			
		||||
	int k1;
 | 
			
		||||
	int calcul;
 | 
			
		||||
	
 | 
			
		||||
	//	Ouverture des fichiers et vérification d'erreurs d'ouverture
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_m = argv[2];
 | 
			
		||||
	f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
	if (f_m==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	if (f_m==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_k = argv[3];
 | 
			
		||||
	f_k = fopen(cheminFic_k, "r");
 | 
			
		||||
	if (f_k==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	if (f_k==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	char * cheminFic_mdc = argv[4];
 | 
			
		||||
	f_mdc = fopen(cheminFic_mdc, "w");
 | 
			
		||||
	if (f_mdc==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	if (f_mdc==NULL)
 | 
			
		||||
	{
 | 
			
		||||
		printf("Echec de l'ouverture du fichier.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	//	Boucle : calcul permettant de decoder un caractère puis l'écrire dans le 
 | 
			
		||||
	//	fichier f_mdc
 | 
			
		||||
	while ((c = fgetc(f_m)) != EOF)
 | 
			
		||||
	{
 | 
			
		||||
		k1 = fgetc(f_k);
 | 
			
		||||
@@ -34,7 +48,7 @@ int decodage(int argc, char *argv[]) {
 | 
			
		||||
		fputc(calcul, f_mdc);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/*fermeture des fichiers*/
 | 
			
		||||
	//fermeture des fichiers
 | 
			
		||||
	fclose(f_m);
 | 
			
		||||
	fclose(f_k);
 | 
			
		||||
	fclose(f_mdc);
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,9 @@
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include "fonctions.h"
 | 
			
		||||
 | 
			
		||||
int generate(int count,int argc,char *argv[])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int generate(int count, int argc,char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	FILE *f;
 | 
			
		||||
	char cle[count];
 | 
			
		||||
@@ -12,20 +14,30 @@ int generate(int count,int argc,char *argv[])
 | 
			
		||||
	char characteres[26]="azertyuiopqsdfghjklmwxcvbn";
 | 
			
		||||
	srand(time(NULL));
 | 
			
		||||
	
 | 
			
		||||
	for(a=0;a<(count-2);a++) { /*on fait donc une première boucle*/
 | 
			
		||||
 | 
			
		||||
	//Crée la nouvelle clé à partir du nombre de caractères du message
 | 
			
		||||
	for(a=0;a<(count-2);a++)
 | 
			
		||||
	{
 | 
			
		||||
		i = rand()%26;
 | 
			
		||||
		cle[a]=characteres[i];
 | 
			
		||||
			}
 | 
			
		||||
	for (a=1;a<3;a++){
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for (a=1;a<3;a++)
 | 
			
		||||
	{
 | 
			
		||||
		i = rand()%26;
 | 
			
		||||
		cle[count-a]=characteres[i];
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	f = fopen (argv[3], "w");
 | 
			
		||||
        if (f) {
 | 
			
		||||
        	fwrite (cle, sizeof(char), count, f);
 | 
			
		||||
        } else {
 | 
			
		||||
        	return EXIT_FAILURE;
 | 
			
		||||
        	}
 | 
			
		||||
        fclose (f);
 | 
			
		||||
 | 
			
		||||
	//Ecris la clé précédemmant créée dans le fichier cle.txt par exemple
 | 
			
		||||
    if (f)
 | 
			
		||||
    {
 | 
			
		||||
        fwrite (cle, sizeof(char), count, f);
 | 
			
		||||
    } 
 | 
			
		||||
    else 
 | 
			
		||||
    {
 | 
			
		||||
        return EXIT_FAILURE;
 | 
			
		||||
    }
 | 
			
		||||
    fclose (f);
 | 
			
		||||
	return EXIT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										148
									
								
								prgm/main.c
									
									
									
									
									
								
							
							
						
						
									
										148
									
								
								prgm/main.c
									
									
									
									
									
								
							@@ -1,148 +0,0 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
int decodage(int argc, char *argv[]) {
 | 
			
		||||
	FILE *f_m, *f_k, *f_mdc; /* strcutures permettant, une fois FOPEN 
 | 
			
		||||
	exécuté de recupérer des informations pour manipuler les fichiers
 | 
			
		||||
	en C */
 | 
			
		||||
	int c;
 | 
			
		||||
	int k1;
 | 
			
		||||
	int calcul;
 | 
			
		||||
	
 | 
			
		||||
	char * cheminFic_m = "message.txt";
 | 
			
		||||
	f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
	if (f_m==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_k = "cle.txt";
 | 
			
		||||
	f_k = fopen(cheminFic_k, "r");
 | 
			
		||||
	if (f_k==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	char * cheminFic_mdc = "message_dc.txt";
 | 
			
		||||
	f_mdc = fopen(cheminFic_mdc, "w");
 | 
			
		||||
	if (f_mdc==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	while ((c = fgetc(f_m)) != EOF)
 | 
			
		||||
	/* EOF est une constante obligatoirement
 | 
			
		||||
	négative (elle vaut -1 sous Linux). */	
 | 
			
		||||
	{
 | 
			
		||||
		k1 = fgetc(f_k); /* fgetc lis le caractère à la position courante du flux considéré*/
 | 
			
		||||
		calcul = c-k1 >= 0?c-k1:256-(c-k1); /* ?? */ 
 | 
			
		||||
		fputc(calcul, f_mdc);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	/*fermeture des fichiers*/
 | 
			
		||||
	fclose(f_m);
 | 
			
		||||
	fclose(f_k);
 | 
			
		||||
	fclose(f_mdc);
 | 
			
		||||
	
 | 
			
		||||
	return EXIT_SUCCESS;
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
int codage(int argc, char *argv[]) {
 | 
			
		||||
	FILE *f_m, *f_k, *f_mc; /* strcutures permettant, une fois FOPEN 
 | 
			
		||||
	exécuté de recupérer des informations pour manipuler les fichiers
 | 
			
		||||
	en C */
 | 
			
		||||
	int c;
 | 
			
		||||
	int k1;
 | 
			
		||||
	int calcul;
 | 
			
		||||
	
 | 
			
		||||
	char * cheminFic_m = "message.txt";
 | 
			
		||||
	f_m = fopen(cheminFic_m, "r");
 | 
			
		||||
	if (f_m==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_k = "cle.txt";
 | 
			
		||||
	f_k = fopen(cheminFic_k, "r");
 | 
			
		||||
	if (f_k==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	char * cheminFic_mc = "message_c.txt";
 | 
			
		||||
	f_mc = fopen(cheminFic_mc, "w");
 | 
			
		||||
	if (f_mc==NULL){
 | 
			
		||||
		printf("L'ouverture du fichier à échouer. Veuillez verifier l'existence de celui-ci.\n");
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	while ((c = fgetc(f_m)) != EOF)
 | 
			
		||||
	/* EOF est une constante qui est obligatoirement
 | 
			
		||||
	négative (elle vaut -1 sous Linux). */
 | 
			
		||||
	{
 | 
			
		||||
		k1 = fgetc(f_k);
 | 
			
		||||
		calcul = (c+k1) % 256; /* modulo 256 du caractère qui est entrain d'être lu */
 | 
			
		||||
		fputc(calcul, f_mc); /* fputc permet d'écrire un caractère sur le flux de caractères passé en paramètre*/
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	fclose(f_m);
 | 
			
		||||
	fclose(f_k);
 | 
			
		||||
	fclose(f_mc);
 | 
			
		||||
	
 | 
			
		||||
	return EXIT_SUCCESS;
 | 
			
		||||
	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char *argv[]) {
 | 
			
		||||
	FILE* fp, *fichier; /* strcutures permettant, une fois FOPEN exécuté de recupérer des informations pour manipuler les fichiers en C */
 | 
			
		||||
	int c, nbrchar;
 | 
			
		||||
	char cle[nbrchar];
 | 
			
		||||
	int a,place;
 | 
			
		||||
	char characteres[26]="abcdefghijklmnopqrstuvwxyz";
 | 
			
		||||
	srand(time(NULL));
 | 
			
		||||
	
 | 
			
		||||
	fp = fopen("message.txt", "r"); /*ouvre le fichier*/
 | 
			
		||||
	if (!fp) {
 | 
			
		||||
        printf("Could not open file \n"); /*renvoie une erreur si le nom du fichier est incorrect*/
 | 
			
		||||
        return 0;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
	for (c = getc(fp); c != EOF; c = getc(fp)){ /*extrait les caractères du fichiers*/
 | 
			
		||||
        // Increment un caractère dans le compteur
 | 
			
		||||
        nbrchar = nbrchar + 1;
 | 
			
		||||
  		}
 | 
			
		||||
 | 
			
		||||
    // Close the file
 | 
			
		||||
    fclose(fp);
 | 
			
		||||
 | 
			
		||||
    /* !! ATTENTION nbrchar compte 2 caractères de plus que le nombre de caractère visible */
 | 
			
		||||
 | 
			
		||||
    for(a=0;a<(nbrchar-2);a++) { /*on fait donc une première boucle*/
 | 
			
		||||
		place = rand()%26;
 | 
			
		||||
		cle[a]=characteres[place];
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
	for (a=1;a<3;a++){
 | 
			
		||||
		place = rand()%26;
 | 
			
		||||
		cle[nbrchar-a]=characteres[place];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
	fichier = fopen ("cle.txt", "wb");
 | 
			
		||||
        if (fichier) {
 | 
			
		||||
        	fwrite (cle, sizeof(char), nbrchar, fichier);
 | 
			
		||||
        } else {
 | 
			
		||||
        	return EXIT_FAILURE;
 | 
			
		||||
        	}
 | 
			
		||||
        fclose (fichier);
 | 
			
		||||
 | 
			
		||||
    if (argv[1]=="-c"){
 | 
			
		||||
        codage(argc, argv);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    else if (argv[1]=="-d"){
 | 
			
		||||
        decodage(argc, argv);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	return EXIT_SUCCESS;
 | 
			
		||||
}
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
txt a encoder stp marche
 | 
			
		||||
txt a encoder
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
<EFBFBD><EFBFBD>ϋ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>փ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
txt a encoder stp marche non
 | 
			
		||||
		Reference in New Issue
	
	Block a user