Je n'ai pas encore tout dit. Voici de quoi va parler ce tutorial :
1 | int xoring = 0x60 ^ 0x9B; |


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | /* xor.c permet de crypter tout type de fichier à l'aide de la fonction XOR by VeNoM630 */ #include <stdio.h> #include <stdlib.h> /* On déclare notre prototype de fonction qui va : ouvrir un fichier en lecture, lire les octets, les 'xorer' et écrire dans le fichier ouvert en écriture. ici, "fin" correspond au pointeur de fichier lu, "fout" correspond au pointeur de fichier d'écriture, et "key" correspond à la clef de cryptage. */ void ReadXorAndWrite(FILE *fin,FILE *fout,char key[30]); /* On va ensuite déclarer nos pointeurs de fichiers et nos variables dans la fonction main */ FILE *fptr1; FILE *fptr2; char filename1[30]; char filename2[30]; char clef[30]; /* On lance la fonction principale du programme : main() */ int main() { /* On demande quel fichier il faut crypter */ printf("Nom du fichier a analyser:\t"); scanf("%s",filename1); /* On fait de même pour le fichier crypté à créer */ printf("Nom du fichier crypte a creer :\t"); scanf("%s",filename2); /* On demande la clef de cryptage XOR */ printf("Entrez votre clef de cryptage :\t"); scanf("%s",clef); /* Voila, l'utilisateur a soumis toutes les données, on va maintenant vérifier si on arrive à lire notre fichier 'filename1' en lecture binaire */ if((fptr1 = fopen(filename1,"rb")) == NULL) { /* Si l'ouverture a echoué, on renvoie un message d'erreur */ printf("Erreur, impossible d'ouvrir %s en lecture.\n",filename1); system("pause > nul"); exit(EXIT_FAILURE); } else { /* Sinon, on vérifie si on arrive à écrire dans notre fichier 'filename' en mode ecriture binaire. Si le fichier n'existe pas, il est créé automatiquement */ if((fptr2 = fopen(filename2,"wb")) == NULL) { /* Si l'ouverture a echoué, on renvoie un message d'erreur */ printf("Erreur, impossible d'ouvrir %s en ecriture.\n",filename2); system("pause > nul"); exit(EXIT_FAILURE); } else { /* Sinon, tout est bon, on exécute notre fonction que nous allons décrire ci-dessous (le prototype est déclaré avant la fonction main() */ ReadXorAndWrite(fptr1,fptr2,clef); /* Puis on ferme les fichiers */ fclose(fptr1); fclose(fptr2); } } /* On renvoie '0' pour montrer que le programme se termine normalement. */ return 0; } /* Maintenant, on va décrire la fonction ReadXorAndWrite() */ void ReadXorAndWrite(FILE *fin,FILE *fout,char key[30]) { /* On va déclarer trois variables : - La première est celle qui va recevoir en mémoire l'octet lu dans fin; - La seconde est la variable qui contiendra en mémoire le XOR de l'octet lu et l'octet de la clef; - La troisième est une variable qui s'incrémentera au fil du temps pour se déplacer dans key[] et qui reviendra au début de la chaîne. */ char ch; int xoring; int i = 0; /* On va ensuite faire une boucle infinie qui s'arrêtera en cas d'échec de lecture de fin, donc si il n'y a plus rien à lire dans fin */ while(1) { /* Si l'on arrive plus à lire dans fin pour mémoriser en adresse mémoire de ch un élément qui correspond à l'octet, on 'break' pour sortir de la boucle */ if(!fread(&ch,sizeof(char),1,fin)) break; else { /* Sinon, on vérifie que nous ne sommes pas à la fin de la chaîne de key, donc si l'octet actuel de key n'est pas '\0'. */ if(key[i] == '\0') { /* On remet le compteur i à 0 pour revenir en début de chaîne */ i = 0; } /* On affecte à 'xoring' le xor de l'octet de fin et celui de la clef grâce à l'opérateur logique '^' */ xoring = ch ^ key[i]; /* Et enfin on écrit dans fout la valeur de xoring ! */ fwrite(&xoring,sizeof(char),1,fout); } /* On a fini la condition, on incrémente 'i' et on ferme la boucle */ i++; } /* On fait savoir à l'utilisateur que l'opération est terminée */ printf("Le XOR est termine !\n"); system("pause > nul"); /* On referme la fonction, et c'est la fin du code */ } |
Nom du fichier à analyser: image.bmp Nom du fichier crypte a creer : image_crypted.txt Entrez votre clef de cryptage : VeNoM630 Le XOR est termine ! _ |
Nom du fichier à analyser: image_crypted.txt Nom du fichier crypte a creer : image2.bmp Entrez votre clef de cryptage : VeNoM630 Le XOR est termine ! _ |
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
RSS tutoriels |
RSS news
Édité par Simple IT SARL :
Nous contacter
| Notre blog | Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
103 Zéros connectés |
8 requêtes |
0.1365s (0.1266s)