Crypter un fichier avec une clée symétrique

Voilà le but est simple on utilise un XOR pour crypter un fichier bit par bit. La méthode décrite est très simple à casser, en effet la clée du XOR étant sur 1 octect pour être sur de pouvoir le fichier quelque soit sa taille il existe seulement 255 combinaisons pour retrouver le texte (bien que le l'octet égal à 11111111b = 255d soit initule car on réalise simplement une inversion de bits).
Petit rappel sur la table de vérité du XOR :
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
le programme n'utilise que stdio et stdlib, un man permet d'obtenir des informations sur le fonctionnement des fonctions. A savoir l'opérateur XOR s'écrit ^ en C.
A compiler avec :
gcc -W -Wall -o crypt cryptXor.c
pas de -ansi parceque sa sert à rien (en plus ca fera bloquer le compilateur).
#include <stdio.h> #include <stdlib.h> void chiffrer(unsigned char, FILE *,FILE *); int main(int argc, char **argv){ FILE *In, *Out; unsigned char clee; int toto; // Validation des arguments de la ligne de commande if(argc !=3){ return 0; } // Ouverture du fichier en lecture binaire return -1; } // Ouverture en écriture binaire du fichier de destination return -1; } // Saisie de la clée (sur 1 octet) if(0 > toto || toto > 255){ return -1; } clee = (unsigned char)toto; // Chiffrement du fichier chiffrer(clee, In, Out); return 0; }//void main(int, char **) void chiffrer(unsigned char k, FILE *entre, FILE *sort){ unsigned char octet; octet ^= k; } }// fin chiffrer(unsigned char, FILE *, FILE *)