begin process at 2008 07 06 01:03:49
1 205 425 membres
7 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CRYPT-DECRYPT AVEC XOR


Information sur la source

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 113

Note :
Aucune note

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++
  • signaler à un administrateur
    Commentaire de Bki le 14/04/2003 01:46:30

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

  • signaler à un administrateur
    Commentaire de GoldenEye le 14/04/2003 11:19:56

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

  • signaler à un administrateur
    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; )

  • signaler à un administrateur
    Commentaire de Bki le 14/04/2003 14:38:39

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

  • signaler à un administrateur
    Commentaire de Bki le 14/04/2003 15:12:11

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

  • signaler à un administrateur
    Commentaire de Krox68 le 14/04/2003 17:42:25

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

  • signaler à un administrateur
    Commentaire de Krox68 le 14/04/2003 17:45:15

    GOLDENEYE...pardon pour le Gildeneye

  • signaler à un administrateur
    Commentaire de Bki le 14/04/2003 21:25:34

    Je n'ai pas dit le contraire :)

  • signaler à un administrateur
    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
    ...

  • signaler à un administrateur
    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++

  • signaler à un administrateur
    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

  • signaler à un administrateur
    Commentaire de Krox68 le 16/04/2003 15:19:35

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

  • signaler à un administrateur
    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);
    }

  • signaler à un administrateur
    Commentaire de GoldenEye le 16/04/2003 19:03:03

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

  • signaler à un administrateur
    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é

  • signaler à un administrateur
    Commentaire de GoldenEye le 16/04/2003 23:23:20

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

  • signaler à un administrateur
    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

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS