From ca5750ea71dbceec6776fbc5811a3901150ce3a9 Mon Sep 17 00:00:00 2001 From: toussain Date: Thu, 15 Dec 2022 22:27:05 +0100 Subject: [PATCH] =?UTF-8?q?1=C3=A8re=20version?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prgm/Makefile | 17 +++++++++++++ prgm/cle.txt | 1 + prgm/codage.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++ prgm/code.c | 32 ++++++++++++++++++++++++ prgm/decodage.c | 37 +++++++++++++++++++++++++++ prgm/fonctions.h | 8 ++++++ prgm/generate.c | 18 ++++++++++++++ prgm/message.txt | 1 + prgm/message_c.txt | 0 9 files changed, 176 insertions(+) create mode 100644 prgm/Makefile create mode 100644 prgm/cle.txt create mode 100644 prgm/codage.c create mode 100644 prgm/code.c create mode 100644 prgm/decodage.c create mode 100644 prgm/fonctions.h create mode 100644 prgm/generate.c create mode 100644 prgm/message.txt create mode 100644 prgm/message_c.txt diff --git a/prgm/Makefile b/prgm/Makefile new file mode 100644 index 0000000..5abdd7a --- /dev/null +++ b/prgm/Makefile @@ -0,0 +1,17 @@ +run : codage.o decodage.o code.o generate.o + gcc -o run codage.o decodage.o code.o generate.o + +codage.o : codage.c + gcc -o codage.o -c codage.c + +decodage.o : decodage.c + gcc -o decodage.o -c decodage.c + +code.o : code.c + gcc -o code.o -c code.c + +generate.o : generate.c + gcc -o generate.o -c generate.c + +clean : + rm -f *.o diff --git a/prgm/cle.txt b/prgm/cle.txt new file mode 100644 index 0000000..f3f221b --- /dev/null +++ b/prgm/cle.txt @@ -0,0 +1 @@ +azertyuiopqsdfghjklmwxcvbn \ No newline at end of file diff --git a/prgm/codage.c b/prgm/codage.c new file mode 100644 index 0000000..6e4ae7b --- /dev/null +++ b/prgm/codage.c @@ -0,0 +1,62 @@ +#include +#include +#include +#include "fonctions.h" + +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; + int count; + char cle[100]; + char * cheminFic_m = "message.txt"; + char * cheminFic_k = "cle.txt"; + char * cheminFic_mc = "message_c.txt"; + +//1 + f_m = fopen(cheminFic_m, "r"); + for (c = getc(f_m); c != EOF; c = getc(f_m)) + { + count = count + 1; + } + generate(count); + fclose(f_m); + +//2 + f_k = fopen(cheminFic_k, "wb"); + if (f_k) + { + fwrite(cle, sizeof(char), count, f_k); + } + else + { + return EXIT_FAILURE; + } + f_k = fopen(cheminFic_k, "r"); + /* Traitement erreur */ + fclose(f_k); + +//3 + f_mc = fopen(cheminFic_mc, "w"); + /* Traitement erreur */ + fclose(f_mc); + + f_m = fopen(cheminFic_m, "r"); + f_k = fopen(cheminFic_k, "r"); + f_mc = fopen(cheminFic_mc, "wb"); + while ((c = fgetc(f_m)) != EOF) + { + k1 = fgetc(f_k); + calcul = (c+k1) % 256; + fputc(calcul, f_mc); + } + fclose(f_m); + fclose(f_k); + fclose(f_mc); + + return EXIT_SUCCESS; + +} \ No newline at end of file diff --git a/prgm/code.c b/prgm/code.c new file mode 100644 index 0000000..a8c1c73 --- /dev/null +++ b/prgm/code.c @@ -0,0 +1,32 @@ +#include +#include +#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; + int k1; + int calcul; + int option; + + /* 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 + + */ + + if (argv[1]=="-c"){ + codage(argc, argv); + } + + else if (argv[1]=="-d"){ + decodage(argc, argv); + } + + return EXIT_SUCCESS; +} \ No newline at end of file diff --git a/prgm/decodage.c b/prgm/decodage.c new file mode 100644 index 0000000..952179f --- /dev/null +++ b/prgm/decodage.c @@ -0,0 +1,37 @@ +#include +#include + +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_c.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"); + } + + /*fermeture des fichiers*/ + fclose(f_m); + fclose(f_k); + fclose(f_mdc); + + return 1; + +} \ No newline at end of file diff --git a/prgm/fonctions.h b/prgm/fonctions.h new file mode 100644 index 0000000..1aab165 --- /dev/null +++ b/prgm/fonctions.h @@ -0,0 +1,8 @@ +#ifndef FONCTIONS +#define FONCTIONS + +int codage(int argc, char* argv[]); +int decodage(int argc, char* argv[]); +int generate(int count); + +#endif diff --git a/prgm/generate.c b/prgm/generate.c new file mode 100644 index 0000000..0bee105 --- /dev/null +++ b/prgm/generate.c @@ -0,0 +1,18 @@ +#include +#include +#include +#include "fonctions.h" + +int generate(int count) +{ + char cle[count]; + int a,i; + char characteres[26]="azertyuiopqsdfghjklmwxcvbn"; + srand(time(NULL)); + for(a=0;a