Cryptage xor

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 017 fois - Téléchargée 35 fois

Contenu du snippet

ce code crypte et decrypte une image en format brut *.RAW en modifant chaque pixel par l'operateur de bit XOR

Source / Exemple :


#include<stdio.h>
#include<stdlib.h>
#include<conio.c>

 int h,l;                                      // hauteur et largeur de l'image

/*************************************************************************************************/
/*                 fonction lire_image() qui lit le fichier image                                */
/*                                                                                               */
/*************************************************************************************************/

unsigned char *lire_image(void)
{

 FILE*fp;

 char   nom[80];                   //nom du fichier a creer
 unsigned char *vec ;             //pointeur sur le fichier dans la memoire retourner par la fonction

 printf("donner la largeur et la hauteur du fichier\n");    //saisie de la taille dun fichier
 scanf("%d%d",&l,&h);

 printf("donner le nom du fichier a ouvrire\n");          //saisie du nom et emplacement du fichier a creer
 scanf("%s",&nom);

 fp=fopen(nom,"rb");                                   //ouverture du fichier en mode rb

if(!fp)
{ printf("\aimpossible d'ouvrire le fichier \n");
     exit(0);
	}

vec=(unsigned char *)malloc(l*h);                       //allocation de l*h bloc

 fread(vec,sizeof(unsigned char),l*h,fp);
 fclose(fp);                                          //fermeture du fichier

     return vec;                                    // pointeur retourner
	}

/*************************************************************************************************/
/*                 fonction ecrire_image() qui ecrit le nouveau fichier crypter                  */
/*                                                                                               */
/*************************************************************************************************/

void ecrire_image(unsigned char *imageD)
{char nom [80];
 int a=0,b=0;
FILE *fp;

printf("nom et chemin de l'image destination\n");
 scanf("%s",&nom);

printf("largeur et hauteur\n");
 scanf("%d%d",&a,&b);

 fp=fopen(nom,"wb");
 fwrite(imageD,sizeof(unsigned char),h*l,fp);
 fclose(fp);
}

void main()
{
	unsigned char *image,*imageD;
	unsigned char cle=15;
	int i;
 
	initscreen();
	
	image=lire_image();
	printf("IMAGE LODER DANS LA MEMOIRE\n");

	for(i=0;i<l*h;i++)
	{image[i]=image[i]^cle; }       /*XOR*/
 
	
	 printf("image crypter\n");

  imageD=image;
	 ecrire_image(imageD);
	 printf("operation terminée\n");
	 
	 
	 
	 free(image);
	 getch();

}

Conclusion :


svp criticquezzzzzzzzzz mon code et reponder moi sur le forum

A voir également

Ajouter un commentaire Commentaires
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
2
Arf oui, j'ai l'habitude d'aller sur plusieurs sites en même temps, erreur de ma part; désolé.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
Je parlais en fait des programmes qui ont pour but de crypter/décrypter les fichiers grâce au XOR. Pas les programmes qui utilisent pour une raison ou une autre un cryptage XOR.
A part celui de GoldenEye, celui ci http://www.cppfrance.com/article.aspx?Val=854 n'est pas sur (stocke la clé).

Sinon je comprends pas le lien sur http://www.programmationworld.com ? Erreur de manip ?
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
2
Kaid >> Je coirs qu'on est pas sur les même longuers d'indes? Bon tant pis je m'explique:

Je suis allé dans la rubrique sécurité-cryptage. Volà des sources utilisant un cryptage xor, ou plutôt j'ai simplement cliqué sur les titres qui me semblait succeptibles d'utiliser un cryptage xor (j'ai autre chose à faire que de tous les regardé.
http://www.programmationworld.com/Forum/Messages.asp?Ids_sru=2&Ids_suj=3962&PageSujets=0&PageMessages=0
Ça fait 2.

http://www.cppfrance.com/article.aspx?Val=854
Ça fait 3 (il y a peut-être une couille avec les liens ousp)

Sachant que ce n'est que sur la première pasge de cette catégorie, on peut grossièrement multiplier par 2 car il y a 2 pages au total. Ensuite jai déjà vu exemple de cryptage xor dans la partie tutorial.

Si il n'y avait pas déjà des porgs avac un cryptage xor j'aurai déjà mis ma source à cryptage xor avec des masques jetables (c'est déjà plus eficace même si c'est pas pratique) sur cppfrance. De plus l'interêt d'une telle source n'est pas palpitant, quoique avec une fonction récursive c'est déjà plus drôle :)

Bon aller il y en a déjà entre 4 et 6.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
1
trinitacs: plein de programmes = 1 ?
Messages postés
249
Date d'inscription
mardi 16 juillet 2002
Statut
Membre
Dernière intervention
7 août 2003
2
pk tu lis le fichier, tu le stockes dans un tableau et ensuite tu écris ? C'est plus simple de lire un octect et mettre dan un buffer de un octect et de lcrypter et ensuite de l'écrire.

Sinon si tu ne peux pas ouvrir le fichier c'est pas exit( 0 ) qu'il fautmettre mais exit( -1 );

Sinon il y a déjà plein de prog avec cryptage xor sur cppfrance.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_gloom)