diff --git a/cle.c b/cle.c new file mode 100644 index 0000000..45896d0 --- /dev/null +++ b/cle.c @@ -0,0 +1,93 @@ +#include +#include +#include + +void gen_cle(char* chemincle,char* chemintxt){ + /* Fonction qui génère une clé en fonction de la taille du + message laissé par l'utilisateur*/ + + /* On ouvre les flux pour enregistrer les éléments.*/ + FILE* flux_c, *flux_t; + srand(time(NULL)); + + /* On créer des variables pour stockers nos futurs infos*/ + char stck[2]; + char elt[1]; + + /* Ouverture des fichiers */ + flux_t = fopen(chemintxt, "r"); + flux_c = fopen(chemincle, "w"); + + /* On parcours 1 a 1 tous les char que le fichier avec le + message de l'utilisateur*/ + while(fread(stck, sizeof(char), 1, flux_t)){ + /* Pour chaques elts, on ajoute un char de la table ASCII + en guise de char pour la cle*/ + elt[0] = (char) random()%256; + fwrite(elt , sizeof(char), 1, flux_c); + } + + fclose(flux_c); + fclose(flux_t); +} + +void gen_mot_cryp(char* chemincle, char* chemintxt, char* chemincrypte){ + /* Cette fonction tranforme un message no crypté en un + crypté grace a la clé de cryptage / décryptage */ + FILE* flux_c, *flux_t, *flux_crpt; + + char stck[2]; + char stckd[2]; + char elt[1]; + + flux_t = fopen(chemintxt, "r"); + flux_c = fopen(chemincle, "r"); + flux_crpt = fopen(chemincrypte, "w"); + + /* Pour crypter le message, on prend la valeur décimale du x + elt de la cle qu'on aditionne a la valeur decimal du x elt du + message de l'utilisateur*/ + while((fread(stck, sizeof(char), 1, flux_t)) && (fread(stckd, sizeof(char), 1, flux_c))){ + elt[0] = (char) (((int) stck[0] + (int) stckd[0] )%256); + fwrite(elt , sizeof(char), 1, flux_crpt); + } + + fclose(flux_t); + fclose(flux_c); + fclose(flux_crpt); +} + +void decrypt(char* chemincle, char* chemincrypte, char* chemin_decrpt){ + /* Cette fonctione permet de décrypter le message, + tandis que nous avons aditionner le message a la clé + Cette fois, nous allons soustraire les valeurs de la clé aux + valeurs du texte crypté*/ + FILE* flux_c, *flux_crpt, *flux_dcrpt; + + char stck[2]; + char stckd[2]; + char elt[1]; + + flux_c = fopen(chemincle, "r"); + flux_crpt = fopen(chemincrypte, "r"); + flux_dcrpt = fopen(chemin_decrpt, "w"); + + while((fread(stck, sizeof(char), 1, flux_crpt)) && (fread(stckd, sizeof(char), 1, flux_c))){ + /* N valeurs décimal des chars du txt_crypté - N valeurs décimals des chars de la clé */ + elt[0] = (char) (((int) stck[0] - (int) stckd[0])%256); + fwrite(elt , sizeof(char), 1, flux_dcrpt); + } + + fclose(flux_c); + fclose(flux_crpt); + fclose(flux_dcrpt); +} + +int main(void){ + /*Apelles des fonctions.*/ + gen_cle("fichier_cle.txt", "fichier_txt.txt"); + gen_mot_cryp("fichier_cle.txt", "fichier_txt.txt", "fichier_crypte.txt"); + decrypt("fichier_cle.txt", "fichier_crypte.txt", "fichier_dcrpt.txt"); + return 0; +} + diff --git a/executable b/executable new file mode 100755 index 0000000..3ecac11 Binary files /dev/null and b/executable differ diff --git a/fichier_cle.txt b/fichier_cle.txt new file mode 100644 index 0000000..69256d8 --- /dev/null +++ b/fichier_cle.txt @@ -0,0 +1 @@ +Ü.ª¡ž¿‰ð;Õ· \ No newline at end of file diff --git a/fichier_crypte.txt b/fichier_crypte.txt new file mode 100644 index 0000000..83633f1 --- /dev/null +++ b/fichier_crypte.txt @@ -0,0 +1 @@ +$“ ßà_­A8 \ No newline at end of file diff --git a/fichier_dcrpt.txt b/fichier_dcrpt.txt new file mode 100644 index 0000000..c57eff5 --- /dev/null +++ b/fichier_dcrpt.txt @@ -0,0 +1 @@ +Hello World! \ No newline at end of file diff --git a/fichier_txt.txt b/fichier_txt.txt new file mode 100644 index 0000000..c57eff5 --- /dev/null +++ b/fichier_txt.txt @@ -0,0 +1 @@ +Hello World! \ No newline at end of file