From 6b0eccf294ffdb9cf983507b71f46355e19f525c Mon Sep 17 00:00:00 2001 From: toussain Date: Fri, 16 Dec 2022 12:28:09 +0100 Subject: [PATCH] PRESQUE --- prgm/cle.txt | 2 +- prgm/codage.c | 50 +++++++-------- prgm/code.c | 27 +++++--- prgm/decodage.c | 13 +++- prgm/fonctions.h | 6 +- prgm/generate.c | 21 +++++-- prgm/main.c | 148 ++++++++++++++++++++++++++++++++++++++++++++ prgm/message.txt | 2 +- prgm/message_c.txt | 1 + prgm/message_dc.txt | 1 + prgm/run | Bin 21208 -> 21208 bytes 11 files changed, 221 insertions(+), 50 deletions(-) create mode 100644 prgm/main.c create mode 100644 prgm/message_dc.txt diff --git a/prgm/cle.txt b/prgm/cle.txt index f3f221b..70db91d 100644 --- a/prgm/cle.txt +++ b/prgm/cle.txt @@ -1 +1 @@ -azertyuiopqsdfghjklmwxcvbn \ No newline at end of file +ixbvhdkevteiludzxvpsnpcp \ No newline at end of file diff --git a/prgm/codage.c b/prgm/codage.c index e326fd0..8c4cbf9 100644 --- a/prgm/codage.c +++ b/prgm/codage.c @@ -1,56 +1,48 @@ +/* + Codage du message + 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 #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 + char * cheminFic_m = argv[2]; f_m = fopen(cheminFic_m, "r"); - for (c = getc(f_m); c != EOF; c = getc(f_m)) - { - count = count + 1; - } - generate(count); /* Traitement erreur */ - //fclose(f_m); - -//2 - f_k = fopen(cheminFic_k, "wb"); - while (f_k) - { - fwrite(cle, sizeof(char), count, f_k); - } - fclose(f_k); + char * cheminFic_k = argv[3]; f_k = fopen(cheminFic_k, "r"); /* Traitement erreur */ - //fclose(f_k); - -//3 - f_mc = fopen(cheminFic_mc, "wb"); + char * cheminFic_mc = argv[4]; + 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); diff --git a/prgm/code.c b/prgm/code.c index a8c1c73..be0146b 100644 --- a/prgm/code.c +++ b/prgm/code.c @@ -6,12 +6,21 @@ 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]; + + 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); - 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é @@ -19,14 +28,14 @@ int main(int argc, char *argv[]) { code -d f1 f2 f3 */ - - if (argv[1]=="-c"){ + if(argv[1]=="-c") + { codage(argc, argv); } - else if (argv[1]=="-d"){ + 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 index 952179f..7eb80be 100644 --- a/prgm/decodage.c +++ b/prgm/decodage.c @@ -9,24 +9,31 @@ int decodage(int argc, char *argv[]) { int k1; int calcul; - char * cheminFic_m = "message_c.txt"; + 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"); } - char * cheminFic_k = "cle.txt"; + 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"); } - char * cheminFic_mdc = "message_dc.txt"; + 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"); } + while ((c = fgetc(f_m)) != EOF) + { + k1 = fgetc(f_k); + calcul = c-k1 >= 0?c-k1:256-(c-k1); + fputc(calcul, f_mdc); + } + /*fermeture des fichiers*/ fclose(f_m); fclose(f_k); diff --git a/prgm/fonctions.h b/prgm/fonctions.h index 1aab165..d6b0c1e 100644 --- a/prgm/fonctions.h +++ b/prgm/fonctions.h @@ -1,8 +1,8 @@ #ifndef FONCTIONS #define FONCTIONS -int codage(int argc, char* argv[]); -int decodage(int argc, char* argv[]); -int generate(int count); +int codage(int argc, char *argv[]); +int decodage(int argc, char *argv[]); +int generate(int count, int argc, char *argv[]); #endif diff --git a/prgm/generate.c b/prgm/generate.c index 0bee105..34ee6e3 100644 --- a/prgm/generate.c +++ b/prgm/generate.c @@ -1,18 +1,31 @@ #include #include #include +#include #include "fonctions.h" -int generate(int count) +int generate(int count,int argc,char *argv[]) { + FILE *f; char cle[count]; int a,i; char characteres[26]="azertyuiopqsdfghjklmwxcvbn"; srand(time(NULL)); - for(a=0;a +#include +#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.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; +} \ No newline at end of file diff --git a/prgm/message.txt b/prgm/message.txt index 91aab4a..139bf2d 100644 --- a/prgm/message.txt +++ b/prgm/message.txt @@ -1 +1 @@ -txt a encoder \ No newline at end of file +txt a encoder stp marche \ No newline at end of file diff --git a/prgm/message_c.txt b/prgm/message_c.txt index e69de29..9ca4fe5 100644 --- a/prgm/message_c.txt +++ b/prgm/message_c.txt @@ -0,0 +1 @@ +֐ϋփ \ No newline at end of file diff --git a/prgm/message_dc.txt b/prgm/message_dc.txt new file mode 100644 index 0000000..3569017 --- /dev/null +++ b/prgm/message_dc.txt @@ -0,0 +1 @@ +txt a encoder stp marche non \ No newline at end of file diff --git a/prgm/run b/prgm/run index a0efa8c851745a61f083f6ca15fb5ed8966a1d04..d40cb687711075b10ba9afa8db26b0824250da2d 100755 GIT binary patch delta 2745 zcmaJ>dr(wW7{BK}_TGgB78a05V})A$M5@n-#OoR z&)L2f*4M&XHI~6t!TvFo=dtnb70hv0MCY;zEVth8xMwvtMJxa5$E9n0-i5*27j2rn zZqj?%>st8Nz)gzv>Peb03g9By7i#Dd6r5{pE|oGvdb+a=yVNhQI(ha61{kIu zPx!)mlA)LlPI5qu(h43!C$UKFfry?ozs9GyWoXlIr)EUFnAOHi9Aj#C&}TDsoQ|%K zhM6YD*~h#3EVVIB&HWd3Kd8el%uPl(d7s(PWCqt7X5eK$wxEn{sNo*Y02#BI#p8sg&Eio32b;^PceO& z4H12Vu{P(!>y=I%qBWv78*5j1#IWAXB6?FeE>6{(m$jlWO+9g4{O$i14*gH%rc3l@ zbH~4TFc$7e*AF)|i%)OHNM1I=okd1Oz>7WPrW;+75oSuF&It#V=<*Dm)=P3IIPo z&0ja0yo!ZF#a+M!cD{7w6^OX7w)9(8J@k^}mUT1qgC{JDuFL(uThYkEJwxO7ZtH^OHKpONi-PMnqH5>p;k6NHg~mSMe* z4dzmBLvg8w5rN`OSo^T?Pta%M;vqZV4`>_KIvl8fc)lK%q@#8TM1|2(lkX@Yr7}-4#a%o;0l-DE2W%u8(v>nKl zf0eU8fg@-K$V)h$tj$Iva?OQY zc^b>6`O8|0m~K{3Mpd;<6w7d8MS@&~T8un`^Qs4x-{E`uAr5EQW)0X!GDWoO+09>?a%I*j0A6)J zjn#FC@0&8J?jV(r>8iWWb1ep*m88;Hw}Q#CYUx;bNn$yS0>3sh`&~-?1`Mqxo9?pU zGQrezEf31$x}4Wkma)_P-pUJo_G>K%Os{o6mRQB#tgK|S`FG&l7Cl*6M33BCeJ39I zW7T!h&#PA|Wdns&6(xmHkP0;Y)I$4T3xG<02qnBzRQV&a9BrEZ3}esm(wTEuJzq5Q zGZZYJRpmZoXW?&@ubMf6FQ1iim*hLpPrR|_;nKZ%j%WX;!CZ#^@`P+bEO7AtXs$k1 z6LVd>x^}#K=u88AaqS%T0Pm=s;I8*O%zA#Jw#vOR?QM)sykU-nkND*LD)tv|n?H?B J?pX5Rn+ delta 2612 zcmZ8heQ*`k72mtxkGv!=A1}lh!VA=t6bYn~AjDB5Sy?)!yil0(2dQGP#6jCo2vSYv z1)q_u+f1dmDB84zX)_as*oHo(p+bqI)4+_K34UN^7&Nuh`bsDSmGPAX*WcM2h`2NN zeEiP&opbNGyF1d&M!H#_$!65+lK<4}Je!pThM91O6RX%lmem&#?oG`d*~>jvc~&}q zWazz?gXIewCr<6iYI){Qi7w@#boLsb41E;ab#VYR=lFx3=h@Ed%b_;eu6oBjptfVB z$_MOD?Rq*n?GIBTic}ObGB=>*)iH7VK)m_Oc(t9R6zv&<8_7$rh~ghuw!hMUkG(7 zfH>{zv0Ha9ZQAv1cG4MsGd26oWIj8YdF1WVlg{1^2-@zt4!36Sz0vl!!tS8saoGJhDh9MJwaK2J>)+#cE%`hGrw7;B&cE&W#pO=x zTej0oHyc|Mq`_F26jo=r&UgKb>!G@iHG*-CNX?l@uJnUL$s&q$YC8mV6x2~r^QNg! z2x=14q@YfuiTVF)!lzaX>bM<92+&wA~Q){w~#Ada`+S4kk73T1cTwxQymw^KMOjbt*OM zmdw}ihWe8hjlPGmHae|cJRF|G`uN@98rIKS!}sQ$xQ2TiO7=hvSv_<$V^;D4KNFs{ zsMlTByXEbI(qYHyb*)}|U*?eqwE=YLcdZ_KUq?`mTRjYRmDSaf=$H7Jyu6t@3fXRb z>h$2JnMK#o)wJV(GY1oUihmdQMMSN7;?Zr}Hg0~jZ2QjbQp4jyPhk%=_~=ihCm*4G zNYdAEo*9Y$;Om@Cg7l=cpg~%&2_$yAQgshB{fn9|dtMXtqH)h#4_$i2^Y%gKe=3Hf zeCBy0@V7vxpe5cNnOiUnRtb4EMu^lmuoh#bF7b~dB{2uZF4Gm>pAmXau1?pL3oK}u zQX!xgto5JZj-YSG<^NFFk9Pr{i{_2D#2fs01lTdGEr?fqwZ0Wsl=*%OVkLGLvmhT{ za5sx40%eB6qCBhoKDM6MmD{YEzfxWh`x*W~vnr6g8mk^lVdh~}RAeKFkfIt($uo_` zq?n$7($+w*l9@%6E^9ABX)XktS9k~62Nl?*xsSunRJF%`v|ZAENa1hg-3g_bT8XIj z7be9d?GUo%f}DpD($-QSKj(h3J1O_J+_hxW43vW0ZDju)LM_fd3>6BhNj2~VEb|nY z>IF69I2_6RfV?r`siuvCs27E2N?F+|-2bV{X=HB1$rd6x@En{uFlO8ZL!nI;!&6i> zNxrH6hP;sWg0IwM=2>cBFj3Up zN}kCwX#T2sjWPo)Jcp{9uTpG=h~-P_64YWOV)7nH8x_D8}<$VUnL z4q=0Yk&ypESQw4e_X#5*|C2Br3%5)d3Hd5vJ0Mh#FcNYAgJ3)PvBkUAlvB9Ke{a&_ zRLz)8W725|Msem|*tpLGl<{$m4RUhT=SImljNF`Ky)dRQbTY;xvqSEObkjc_l)3)#>$@5`^Bj$>XgG4=p46`PK z-epO5k!f0HHdIhw%xfy=ut~nTa&C_QwUz>=uk{?3yp;dCvXa^SUF2*`d|sJPA9-lm zBlyU-EsM%!ixPv&IyGQ*%On1WKbsH88gEk7MA!0X8GDNtuULt{{9`LlAgQ!^Nx=VK zp)}`vR?OsW)u})t7cQPgzN_ZP#iw$F=l{20w%{DuQigPUSl|_jEbE)5+@$ekwPk^5 zo