begin process at 2010 03 19 08:05:13
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité & Cryptage

 > CRYPT-DECRYPT AVEC XOR

CRYPT-DECRYPT AVEC XOR


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité & Cryptage Niveau :Initié Date de création :13/04/2003 Date de mise à jour :13/04/2003 18:47:31 Vu :3 874

Auteur : Krox68

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

 Description

ba le titre est assez clair...

Source

  • #include <iostream.h>
  • #include <stdio.h>
  • #include <conio.c>
  • /*############################################################################*/
  • int crypt()
  • {
  • char mot[999];
  • char crypt[999];
  • int cle;
  • clrscr();
  • cout << "mot a crypter : ";
  • gets(mot);
  • cout << "cle numerique : ";
  • cin >> cle;
  • for(int n=0;n<strlen(mot);n++)
  • {
  • crypt[n] = mot[n] ^ cle;
  • }
  • cout << crypt;
  • }
  • /*############################################################################*/
  • int decrypt()
  • {
  • char motc[999];
  • char decrypt[999];
  • int cle2;
  • clrscr();
  • cout << "mot : ";
  • gets(motc);
  • cout << "cle numerique : ";
  • cin >> cle2;
  • for(int n=0;n<strlen(motc);n++)
  • {
  • decrypt[n] = motc[n] ^ cle2;
  • }
  • cout << decrypt;
  • }
  • /*############################################################################*/
  • int main()
  • {
  • int choix;
  • cout << "1.Crypter\n2.Decrypter\n";
  • cin >> choix;
  • switch(choix)
  • {
  • case 1:
  • crypt();
  • break;
  • case 2:
  • decrypt();
  • break;
  • default:
  • exit(0);
  • break;
  • }
  • getchar();
  • }
#include <iostream.h>
#include <stdio.h>
#include <conio.c>


/*############################################################################*/


int crypt()
{
char mot[999];
char crypt[999];
int cle;

    clrscr();

     cout << "mot a crypter : ";
     gets(mot);
     cout << "cle numerique : ";
     cin >> cle;

     for(int n=0;n<strlen(mot);n++)
     {
     crypt[n] = mot[n] ^ cle;
     }

     cout << crypt;
}


/*############################################################################*/


int decrypt()
{
char motc[999];
char decrypt[999];
int cle2;

    clrscr();

     cout << "mot : ";
     gets(motc);
     cout << "cle numerique : ";
     cin >> cle2;

     for(int n=0;n<strlen(motc);n++)
     {
     decrypt[n] = motc[n] ^ cle2;
     }

     cout << decrypt;
}

/*############################################################################*/


int main()
{
int choix;

    cout << "1.Crypter\n2.Decrypter\n";
    cin >> choix;

    switch(choix)
    {
     case 1:
     crypt();
     break;

     case 2:
     decrypt();
     break;

     default:
     exit(0);
     break;
    }

getchar();
}


 Conclusion

Sou DevC++


 Sources du même auteur

LA LIB POUR FENETRE WIN32
CLIENT-SERVEUR : DONNEES CRYPTEES XOR
SCANNER DE SERVICES
NET : UTILITAIRE LINUX SOCKETS
Source avec Zip UTILITAIRE RESEAU

 Sources de la même categorie

Source avec Zip Source avec une capture CRYPTEUR-DÉCRYPTEUR-IP par antho974
Source avec Zip Source avec une capture ELGAMALCIPHER par CHAR As Human
Source avec Zip CRYPTER-DECRYPTER EN UTILISANT L'ALGORITHME DE CESAR par Antoinejdu44
Source avec Zip CRYPT-O-MATIC "DARKCHOCOLATE" par FrancoisGauthier
Source avec Zip CREEP SECURITY ALGORITHM par nanonavich

Commentaires et avis

Commentaire de Bki le 14/04/2003 01:46:30

C'est du niveau 2 ça ?????

Commentaire de GoldenEye le 14/04/2003 11:19:56

T'inscris ça dans un fichier et ce sera nickel

Commentaire de cmarsc le 14/04/2003 11:49:25

strlen est dans &lt;string.h&gt;  
getch() (&lt;conio.c&gt; ou .h) plus pratique que getchar() ( standard &lt;stdio.h&gt; )

Commentaire de Bki le 14/04/2003 14:38:39

J'vaux dire que ça parait un peu trop enfantin pour un niveau 2 :)

Commentaire de Bki le 14/04/2003 15:12:11

&lt;conio.h&gt;... made by Borland... non portable

Commentaire de Krox68 le 14/04/2003 17:42:25

merci Gildeneye jy pense...
moi je trouve kil est bien mon prog
non ?

Commentaire de Krox68 le 14/04/2003 17:45:15

GOLDENEYE...pardon pour le Gildeneye

Commentaire de Bki le 14/04/2003 21:25:34

Je n'ai pas dit le contraire :)

Commentaire de GoldenEye le 15/04/2003 11:02:58

Ah aussi, "clé" n'est pas forcément un int, ce serait mieux si c'était un char * que tu fais tourner sur la longueur de la chaine à coder
ex
BONJOUR avec comme clé PSG
B xor P
O xor S
N xor G
J xor P
...

Commentaire de AmK le 15/04/2003 15:12:18

Ben ya comme meme quelques erreurs,(je suis sur que t'as pas fait expres de les faire
ça peut arriver :))

1- puisque tu utilises exit(0) tu devrais alors inclure le fichier d'entete &lt;stdlib.h&gt;
2-inclure le header file &lt;string.h&gt; pour strlen
3-Tu as declare ta fonction de type int , mais quand tu l'as appelle tu as fait comme ci
elle etait de type void !

donc au lieu de int decrypt();
mets  : void decrypt();

c'est pareil pour crypt(); !

voila ta source sans les bugs :

#include &lt;iostream.h&gt;
#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;string.h&gt;  /* Pour strlen ! */
#include &lt;stdlib.h&gt;  /* Pour exit   ! */


/*############################################################################*/


void crypt()
{
char mot[999];
char crypt[999];
int cle;

    

     cout &lt;&lt; "mot a crypter : ";
     cin&gt;&gt;mot;

     cout &lt;&lt; "cle numerique : ";
     cin &gt;&gt; cle;

     for(int n=0;n&lt;strlen(mot);n++)
     {
     crypt[n] = mot[n] ^ cle;
     }

     cout &lt;&lt; crypt;
}


/*############################################################################*/


void decrypt()
{
char motc[999];
char decrypt[999];
int cle2;

    

     cout &lt;&lt; "mot : ";
     cin&gt;&gt;motc;
     cout &lt;&lt; "cle numerique : ";
     cin &gt;&gt; cle2;

     for(int n=0;n&lt;strlen(motc);n++)
     {
     decrypt[n] = motc[n] ^ cle2;
     }

     cout &lt;&lt; decrypt;
}

/*############################################################################*/


int main()
{
int choix;

    cout &lt;&lt; "1.Crypter
2.Decrypter
";
    cin &gt;&gt; choix;

    switch(choix)
    {
     case 1:
     crypt();
     break;

     case 2:
     decrypt();
     break;

     default:
     exit(0);
     break;
    }
getchar();

}

PS: j'ai mis cin , a la place de gets mais je suis pas sur de mon coup là!
une chose est sur avec gets ça marchait pas bien,parceque impossible de saisir le mot !

Voila tu peux aussi comme l'a dis goldeneye inscrire le tout dans un fichier ça serait pas mal !
par exemple voila la source de cryptage seulement avec fichier :

#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;econio.h&gt;

struct compi {char mot[999],motc[999];int cle ; }; /* Strcture qui va nous servir pour la manipulation de fichiers !*/

void fichier();
void fenetre();

void fichier() /* Definition de la fonction fichier */

{


FILE *X;
char rep;
int t,i;
compi c; /* Variable de type structure */
int cle;


textcolor(12);
textbackground(10);
printf("
Programme de cryptage du XOR en mode fichier
");
X=fopen("crypta.txt","a+"); /* Ouverture du fichier en mode a+ c'est a dire on peut ajouter des donnees sans detruire */
do
{
printf("
Entrez votre mot et votre cle !");
scanf("%s %d",&c.mot,&c.cle);
fwrite(&c,sizeof(compi),1,X);


t=strlen(c.mot);
for (i=0;i&lt;=t;i++)
{
c.motc[i]=c.mot[i] ^ cle;
}

printf("
Voila votre texte Crypté ! : %s",c.motc);
fwrite(&c,sizeof(compi),1,X);

printf("
Encore ?");
rep=getche();
}
while (rep=='o');

fclose(X);
}

void fenetre()
{
char mot1[999],motc1[999];
int n,cle1,j;
textcolor(16);
textbackground(20);
printf("
Cryptage du XOR en mode Direct !
");
printf("
Quel est le mot à crypter ?");
scanf("%s",&mot1);
printf("
Quelle est la cle avec laquelle tu vas crypter ?");
scanf("%d",&cle1);

n=strlen(mot1); // Calcul de la taille du mot

for (j=0;j&lt;=n;j++)
{
motc1[j]=mot1[j] ^ cle1; // on applique l'operateur du xor lettre par lettre jusqu'a la fin du mot
}
printf("
Voila votre texte Crypte ! :
%s",motc1);
}

void main()
{
int choix;
retour:
printf("
1-Mode Fichier
2-Mode Direct
");
scanf("%d",&choix);
switch(choix)
{
case 1:
fichier(); // Appel de la fonction fichier();
break;

case 2:
fenetre(); // Appel de la fonction fenetre();
break;

default :
goto retour;
break;
}
}

/*fin */
Amicalement
A++

Commentaire de GoldenEye le 15/04/2003 15:36:58

C bon mais alors c'est long comme code !!!!!!!!!!!!!!!!!! (cf ma source sur le même sujet)
PAS DE GOTO !!!
crypt et decrypt, c'est la même chose effectivement

Commentaire de Krox68 le 16/04/2003 15:19:35

ok merci pour vos bons commentaires,
c'est si rare...

Commentaire de soseki le 16/04/2003 16:23:33

Pour le cryptage XOR, je crois que cela suffit  non ?:

/* cryptage  XOR */

#include &lt;stdio.h&gt;
#define CLE 57

void main(int argc, char**argv)
{
FILE *In,*Out;
unsigned char byte;


if (argc != 3)
{
printf("
Usage : %s &lt;fichier source&gt; &lt;fichier destination&gt;
",argv[0]);
exit(0);
}


if ((In = fopen(argv[1], "rb+"))== NULL)
{
printf("Fichier %s introuvable!
",argv[1]);
exit(-1);
}

if ((Out = fopen(argv[2], "wb+" ))== NULL)
{
printf("Fichier %s imppossible à créer
",argv[2]);
fclose(In);
exit(-1);
}

while (fread(&byte,2,2,In))
{
byte ^=CLE;
fwrite(&byte,2,2,Out);
}
fclose(In);
fclose(Out);
}

Commentaire de GoldenEye le 16/04/2003 19:03:03

pourquoi CLE est égal à 57 ? :-))

Commentaire de soseki le 16/04/2003 22:28:07

C juste pour qu'il est une valeur, on peut mettre ce que l'on veut.
ça changera l'apparence du contenu du fichier crypté.
!!!!Le code que j'ai mis est faux :
il faut mettre des 1 à la place des 2 au niveau du while et du fwrite !!!!
désolé

Commentaire de GoldenEye le 16/04/2003 23:23:20

Laisse à l'user le soin de choisir la clé

Commentaire de D1m3x le 04/05/2003 20:53:41

Euh je vois pas pk tu met: char char mot[999];
le maximum de lettre d'un char étant de 256 ça ne te sert strictement à rien!

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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,499 sec (3)

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