begin process at 2012 05 27 15:16:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPTAGE XOR

CRYPTAGE XOR


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Niveau :Débutant Date de création :25/11/2002 Date de mise à jour :25/11/2002 01:54:27 Vu :4 241

Auteur : gloom

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • #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();
  • }
#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


 Sources de la même categorie

PROJET DE CRYPTOGRAPHIE: RSA À JEU REDUIT D'INSTRUCTION par samatarahmed
Source avec Zip Source avec une capture CRYPTOSYSTÈME ELGAMAL LIBRAIRIE GMP par louelh95
Source avec Zip Source .NET (Dotnet) NOUVEL ALGORITHME D'ENCRYPTION-DÉSENCRYPTION DYNAMIQUE (INFA... par vletktol
Source avec Zip A2DCRYPT - CRYPTAGE 2048 BITS par darkor
Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974

Commentaires et avis

Commentaire de GoldenEye le 25/11/2002 10:38:28

Pourquoi tu ne calcules pas la taille du fichier ?

Commentaire de Kaid le 25/11/2002 11:05:31

Pourquoi tu demandes à l'utilisateur la hauteur et la largueur du fichier dans la fonction void ecrire_image(unsigned char *imageD) car tu ne te serts pas du résultat de la saisie.

Commentaire de 6Po le 25/11/2002 18:52:39

l*h a mon avis ca sert a qqch non :D
il crée un tableau selon la taille de ton image !

Fo tout lire avant de poser des question bêtes :D

Commentaire de Kaid le 25/11/2002 19:27:51

Je parles pas des variables h et l dans la fonction ecrire_image(unsigned char *imageD) mais des variables a et b (celles renseignées par l'utilisateur).
"Fo tout lire avant de poser des question bêtes :D" -&gt; parles pour toi.

Commentaire de Kaid le 25/11/2002 19:35:47

&gt; Message de : gloom Déposé le : 25/11/2002 16:55:55
&gt; Sujet : demande de taille dans ecrire-image
&gt; Message : salut ...la taille je me sert pour modifier la taille d'origine ..au debut
&gt; mettant que tu as ton image sur 1400 de largeur et 1600 de hauteur  tu cryptes
&gt; mais tu modifies aussi la taille a la fin tu aurras une image cryptée disant 250
&gt; *300 mais ca c pas nécessaire car pour editer a photo tu as besoin d'un editeur
&gt; de photo tels que paint shop ou photo shop et la majoritée d'entre eux possédes
&gt; des Zoom et donc modifies ta taille j'éspére que g repondue a ta question si il y
&gt; en a d'autres n'hésites pas a+

Donc ca devrait servir (car tu n'utilises pas a et b dans ecrire_image()) pour recadrer l'image ? Car si tu veux réduire la taille de l'image il faut utiliser un algo plus complexe.
Tu peux faire évoluer ton programme pour qu'il crypte n'importe quel fichier.

Commentaire de Kaid le 26/11/2002 00:41:51

&gt; Message de : gloom Déposé le : 25/11/2002 20:27:52
&gt; Sujet : ok d'oki
&gt; Message : ah d'accord pour un algorithme plus complexe j'y penserais...moi g
&gt; voulue juste appliquer un simple cryptage XOR c le plus simple qui existe non ...
&gt; moi je travaille a le faire evoluer dans le sens ou je veut faire editer mon image
&gt; sous console win32 sans etre obligé de passé par un editeur de photo
&gt; est ce ke c possible ?

En fait tu veux afficher l'image à l'écran c'est ca ?

Commentaire de trinitacs le 26/11/2002 18:05:28

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.

Commentaire de Kaid le 27/11/2002 13:17:30

trinitacs: plein de programmes = 1 ?

Commentaire de trinitacs le 27/11/2002 16:28:57

Kaid &gt;&gt; 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.

Commentaire de Kaid le 27/11/2002 17:21:19

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 ?

Commentaire de trinitacs le 29/11/2002 16:39:55

Arf oui, j'ai l'habitude d'aller sur plusieurs sites en même temps, erreur de ma part; désolé.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales