#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; }