OU exclusif simple


Cette méthode est certainement l'une des plus simple ( pas La plus simple mais
presque ). Il suffit de se mettre d'accord sur une clef quelconque ( ici 7 lettres ).
Comme vous le savez tous, chaque caractère porte un numéro ( cf. Table ASCII ).
On découpe ensuite le texte en blocs de la même longueur que la clef. Et ensuite
à chaque bloc on applique un XOR avec la clef.

	CECIEST UNTEXTE ACRYPTE RPARLAM ETHODED UOUEXCL USIF...
XOR
	UNECLEF UNECLEF UNECLEF UNECLEF UNECLEF UNECLEF UNECLEF



( rappel :  1 XOR 1 = 0
	     	0 XOR 0 = 0
	     	1 XOR 0 = 1
	     	0 XOR 1 = 1 ).

On obtient alors le texte crypté. Ce qu'il y a d'intéressant c'est qu'il suffit d'effectuer
le même processus avec la même clef sur le texte crypté pour le décrypter. Bon, ici pas
d'exemple car les caractères obtenus après le cryptage sont complètements ésotériques.
Pas dur ......


Source:

/****************** programme de crypto par XOR ****************** /****************** Mantis 1998 ****************** #include <stdio.h> #include <stdlib.h> void Erreur(char *essai); unsigned char Byte,*Source,*Source0; FILE *FSource,*FDest; int i,j,Taille; //****************** Erreur ********************* void Erreur(char *essai) { printf("crypt-decrypt ....\n"); printf("Usage:\n"); printf(essai); printf(" fichier_source fichier_destination clef \n"); printf("clef: 7 caractères \n"); exit(-1); } //************************************************************* //***************** Debut du programme ********************** //************************************************************* void main (int argc,char *argv[]) { if (argc!=4) Erreur(argv[0]); for(j=0;j<7;j++) { if (!argv[3][j]) { Erreur(argv[0]); } } if ((FSource=fopen( argv[1] , "rb" ))==NULL) { printf("Erreur durant l'ouverture du fichier source \n"); exit(-1); } if ((FDest=fopen( argv[2] , "wb" ))==NULL) { printf("Erreur durant l'ouverture du fichier destination \n"); exit(-1); } fseek(FSource,0L,SEEK_END); // on calcul la taille du fichier Taille=ftell(FSource); fseek(FSource,0L,SEEK_SET); if ((Source=(unsigned char*)malloc(Taille))==NULL) { printf("Problème d'allocation de mémoire \n"); exit(-1); } Source0=Source; fread(Source,sizeof(char),Taille,FSource); for(i=0;i<((Taille-(Taille % 7))/7);i++) // on ne traite pas les derniers octets en trop { for(j=0;j<7;j++) *(Source++)^=argv[3][j]; } fwrite(Source0,sizeof(unsigned char),Taille,FDest); printf("Traitement du fichier termine.... \n"); // libère la mémoire et ferme le fichier fclose(FSource); fclose(FDest); free(Source0); }

Avantages:

- Algorithme très simple à implémenter. - Très rapide et simple à comprendre. - Le programme est déjà tapé et compilé il reste juste à le downloader : Version Linux (pas encore dispo.) Version Windows 9x (fenêtre DOS)

Inconvénients:

- Totalement nul à déchiffrer. - Ne peut servir que contre votre petit frère.