Partage
  • Partager sur Facebook
  • Partager sur Twitter

[c] crypteur : marche a suivre

    18 décembre 2005 à 20:54:42

    Bonsoir a tous,

    voila j'ai décider de me lancer dans la creation d'un logiciel de cryptage pour m'entrainer, seulement je n'ait aucune idée de la marche a suivre pour y arriver, comment modifier la variable qu'inscrit l'utilisateur,... tout ca seulement en C et non c++

    voila le debut du code :

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

    int main(int argc, char *argv[])
    {
      printf ("******************** Logiciel de cryptographie ********************** \n\n\n");
      printf ("Bienvenue sur mon programme de cryptographie \n\n");
      printf ("Pour l'utiliser rien de plus simple, entrez la phrase a cryptographier \n");
      printf ("et le programme fait le reste pour vous! \n\n");
      printf ("Auteur : oYo - email/msn : neo_15_3@hotmail.com \n\n");
      printf ("********************************************************************* \n\n");
     
      long choix = 0;
      printf ("Choisissez une categorie : \n\n");
     
      printf ("1. Crypter un texte \n");
      printf ("2. Decrypter un texte \n");
      printf ("3. A propos du programme \n");
      printf ("4. Quitter le programme \n\n");
      scanf ("%ld", &choix);
     
      printf ("\n\n");
     
      if (choix == 1)
      {
            char phrase_crypto;
            printf ("Veuillez saisir le texte a cryptographier : \n\n");
            scanf ("%s", &phrase_crypto);   
      }
     
      else if (choix == 2)
      {
           char phrase_decrypto;
           printf ("Veuillez saisir le texte a decryptographier : \n\n");
           scanf ("%s", &phrase_decrypto);
      }
     
      else if (choix == 3)
      {
           printf ("En construction \n\n");
      }
     
      else if (choix == 4)
      {
            return 0;
      }
     
      else
      {
          printf ("Ce menu n'existe pas! \n\n");
      }
     
      printf ("********************************************************************* \n\n");
      system("PAUSE");     
      return 0;
    }


    merci d'avance pour votre aide!

    ah oui une autre question, ca m'interesserer de faire un programme regroupant les fonction ping,... sous dos mais en C, quelqu'un aurait un cours sur ces fonctions? svp


    voila merci beaucoup,
    • Partager sur Facebook
    • Partager sur Twitter
      18 décembre 2005 à 22:02:31

      moi je suis dans le même cas que toi ...on peut expliquer comment crypter???
      • Partager sur Facebook
      • Partager sur Twitter
        19 décembre 2005 à 2:51:50

        question : pourquoi tu déclares ta variable en char alors quelle est sensée contenir un mot ?
        utilise alors :
        char truc[128]; // change 128 par ce que tu veux

        fock > tu peux faire un tour là bas : http://fr.wikipedia.org/wiki/Portail:Cryptologie
        • Partager sur Facebook
        • Partager sur Twitter
          19 décembre 2005 à 9:32:15

          Salut, en fait t'as plusieurs possibilités de cryptage, tu peux crypter en te servant de l'ascii puis en faisant des calculs, prend cette exemple :
          #include <stdio.h>
          #include <stdlib.h>

          int main(int argc, char *argv[])
          {
             
              /*Les Variables*/
            long nombreCrypter;
            long number;
            char motaCrypter;
            long boucle=10000;
            /*Fin des variables */
           
            printf("                      .::Super Crypteur By Bork0::.                      \n\n");
            printf("Veuillez tapez la lettre a crypter :   ");
            scanf("%c", &motaCrypter); //On recupère ce que l'utilisateur a mis et on le met dans la var motaCrypter
           
            /*La variable nomCrypter est déclaré en long, tandis que motaCrypter en char, on prend donc la 1 ere
            lettre de motaCrypter et on le convertit en decimal (mot a crypter) */

           
            nombreCrypter = motaCrypter;
            number = nombreCrypter; // On assigne a number la valeur de nombreCrypter
                             
            for (number ; number < boucle ; number+=500) //Une boucle, qui augmente  number (nombreCrypter) de 500, et sarrete juste avant 10000
            {
                //Besoin de rien dans la boucle !
               
                }     
                 system("cls"); //On efface l'ecran, enleve si t'es sous linux
                 printf("La lettre cryptee vaut :  %ld\n\nBonne Chance :-)\n\n", number); //Et on affiche le tout
                system("pause");
           
            return 0;
          }

          /*Dans ce code il y a 2 sécurité :
                 1) on prend juste la 1ère lettre,puis on convertit en decimal
                 2) On incrimente de 500 jusqu'a arriver avant 10 000
           Si tu veux rendre ton cryptage incrackable, il te suffit juste de remplacer 500 par 1
           De cette facon, n'importe quelle lettre arrivera a 9999, pour retrouver la vraie lettre il faudra connaitre
           le nombre de boucles, et ca je cherche encore !!
           */
               



          Tu peux aussi crypter en remplaçant des lettres par d'autres, ex :
          #include <stdio.h>
          #include <stdlib.h>

          int main(int argc, char *argv[])
          {
              char wordCrypter;
             
            printf("                                .::SuPer Crypter v2.0::.                     \n\n");
            printf("Tapez le mot a crypter :   ");
           
           do
                  {
                          scanf("%c", &wordCrypter); //On analyse chaque lettre
                         /*On re-affiche chaque lettre mais en incrémentant leur valeur de 4
                         dans la table ascii !!! */

                          printf("%c", wordCrypter + 4);
                  } while(wordCrypter != '\n'); //On arrete la boucle quand on arrive a \n
                  printf("\n\n"); //Pour aerer
           system("pause");       
            return 0;
          }


          J'espère que je t'aurais aidé, je cherche d'auutres algorithme de cryptage :p
          Si tu as besoin du decrypteur (piur le 1 er notamment) hésite pas, j'ai les 2 ;)
          • Partager sur Facebook
          • Partager sur Twitter
            19 décembre 2005 à 9:36:40

            Si tu connais le K6 ou le morse, tu peux t'amuser à coder un programme qui code et décode.

            Sinon, le cryptage avec +=1 et -=1, ce n'est pas vraiment du cryptage même si ça en a l'air.
            • Partager sur Facebook
            • Partager sur Twitter
              19 décembre 2005 à 9:40:50

              merci pour votre aide :)

              borko > je vais essayer de voir comment fonctionne tes source ca me parait interessant, ca va surement m'aider, sinon pour les decrypteur je veut bien plus il y en a plus j'apprend lol


              encore merci,
              • Partager sur Facebook
              • Partager sur Twitter
                19 décembre 2005 à 9:41:10

                Mouais enfin, si tu prend le "s" (code ascii = 115) et que tu l'incrémentes jusqu'a 9999 avec des +1 ca te fait 9884 boucles (si mes calculs sont exacts :-° ) et bon, tu peux pas l'inventer !!!
                De plus le system("cls"); juste après la boucle, ca empeche l'utilisateur de compter les boucles (avec +=500 y en a environ 10) donc c'est encore plus dur a decrypter !
                Enfin, y doit surement avoir multiples solutions pour decrypter
                • Partager sur Facebook
                • Partager sur Twitter
                  19 décembre 2005 à 9:44:05

                  ouai, perso c'est ce que je voulai faire augmenter la valeure ascii de chaque terme d'un nombre détérminer mais je ne sait pas comment faire
                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 décembre 2005 à 9:46:35

                    Tu ajoute au caractère le nombre :

                    c += 50;


                    Le seul problème, c'est que ce ne sera pas forcément affichable. Car les caractères ascii se trouve entre -127 et 128
                    Ou pour les unsigned char entre 0 et 256
                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 décembre 2005 à 9:46:50

                      Pour le decrypteur du n°1 (la boucle qui incremente de 500) :
                      #include <stdio.h>
                      #include <stdlib.h>

                      int main(int argc, char *argv[])
                      {
                       
                          /*Les variabless*/
                        long cryptu=0;
                        long decryptage;
                        char lettre;
                        /*Fin des variables*/
                       
                        printf("                   .::Decrypteur By Bork0::.                 \n\n");
                        printf("Tapez le nombre a decrypter :     ");
                        scanf("%ld", &cryptu); //On affecte le nombre que l'utilisateur vient de rentrer a cryptu
                        printf("\n\n"); //Pour aérer
                        for (decryptage = cryptu ; decryptage > 0 ; decryptage-=500)
                        {
                            lettre = decryptage; //on transforme decryptage en lettre, si decryptage vaut 115, lettre vaut s (ex)
                            }
                            system("cls"); //On efface l'écran
                            printf("La lettre cryptee est le %c !!\n\n", lettre); //on dit le résultat !!
                            system("pause"); //Pour eviter que le programme se ferme tout de suite
                               
                        return 0;
                      }
                      /*****************************************************************************************
                      Comme la boucle fait -500, on s'arrete jusqu'a 0 (il y a 255 Lettres dans la table ascii)
                      L'avantage ici, c'est que contrairement a si on cryptait en incrementant de 1
                      Il n'y a pas besoin de connaitre le nombre de boucles..
                      Tu peux aussi faire cryptu - 9500 ca marche aussi, mais ca ne marcherait pas si tu mettais
                      +498 par exemple, tandis que la t'as juste a changer le -=500 en ce que tu veux
                      tant que c'est pas inferieur a 256 !!
                      J'essaye de trouver comment (dans le cryptage) je pourrais connaitre le nombre de boucles
                      et ca me permettrait de faire un crypteur bien plus sécurisé !!
                      *******************************************************************************************/


                      Quand a l'autre, j'y suis dessus la, je te le donne dans 20 Min ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        19 décembre 2005 à 9:48:38

                        oki merci :)

                        par contre pour ton deuxieme crypteur, ca ne marche que pour des mots? ou pour un texte ca va aussi?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          19 décembre 2005 à 9:51:19

                          Il marche pour aussi pour des textes !! Bon le decrypteur était bien plus facile que ce que je pensais, tiens :
                          #include <stdio.h>
                          #include <stdlib.h>

                          int main(int argc, char *argv[])
                          {
                             char wordCrypter;
                             
                            printf("                                .::SuPer Crypter v2.0::.                     \n\n");
                            printf("Tapez le mot a decrypter :   ");
                           
                           do
                                  {
                                          scanf("%c", &wordCrypter);
                                         
                                          printf("%c", wordCrypter - 4);
                                  } while(wordCrypter != '\n');
                                  printf("\n\n");
                            system("PAUSE");     
                            return 0;
                          }

                          /*************************************************
                          Il suffit juste de remplacer le +4 du decrypteur par -4.
                          J'essaye de trouver une fonction pour calculer le nombre de lettres du mot
                          Afin de crypter non aps +4 mais en fonction du nombre de lettre !!
                          Ne tient pas compte de la note de musique a la fin du code, il correspond au \n !!
                          **************************************************/



                          Voila ! :-°
                          Si y a un truc que tu comprend pas, hésite pas ;)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            19 décembre 2005 à 9:57:53

                            merci ca fait plaisir,

                            moi qui me casser la tête a faire un code ultra compliquer, alors que ca peut tenir en 10 ligne mdr

                            edit : ça fonctionne encore merci :)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              19 décembre 2005 à 11:23:39

                              merci il y a enfin quelqu'un qui veut bien nous aider ( ya pas une soluce pour faire le premier avec des mots???)merci.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                19 décembre 2005 à 11:40:21

                                Si on peut, par contre pour faire le decrypteur ca sera un peu plus dur !!
                                Je viens de finir un crypteur qui cette fois marche avec les mots (meme les phrases), par contre j'ai du mal a faire le decrypteur, si vous y arrivez, dites le moi :p :
                                #include <stdio.h>
                                #include <stdlib.h>

                                int main(int argc, char *argv[])
                                {
                                    system("color f2"); //Pour donner un effet "matrix"
                                  /*les variables*/
                                  char aCrypt;
                                  long cCrypt, bCrypt;
                                  /*Fin des variables*/
                                 
                                  printf("                    .:-:Mega Crypter By Bork0:-:.           \n\n");
                                  printf("Tapez le mot a Crypter :\n");
                                 
                                  //Debut de la boucle
                                  do
                                  {
                                                              scanf("%c", &aCrypt); //On analyse lettre par lettre le mot
                                                              cCrypt = aCrypt; //On convertit chaque lettre en ascii
                                                             
                                                              /*On enlève 32 a chaque decimal, le 1 er ascii lettre commence a 33*/
                                                              cCrypt = cCrypt - 32;
                                                             
                                                              /*Quand la boucle arrive a \n (entrée) elle est fini */
                                                              }while(aCrypt != '\n');
                                                              bCrypt = cCrypt;
                                                              /*On incremente de 1 jusqu'a 10 000*/
                                                              for (bCrypt ; bCrypt < 10000   ; bCrypt+=1)
                                                              {
                                                                  printf("%ld", bCrypt);
                                                                  /*On affiche a chaque incrementation, pour donner
                                                                  un effet "Matrix" !! */

                                                                  }
                                                                  system("cls"); //Puis on efface
                                                              printf("\n\nLe mot cryptee vaut : %ld \n\n", bCrypt); //On dit le résultat
                                                             
                                                                       
                                  system("PAUSE");     
                                  return 0;
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  19 décembre 2005 à 11:49:13

                                  le mot crypter vaut toujours 10 000 c'est normale? lol
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    19 décembre 2005 à 11:54:03

                                    Ouais c'est normal, en fait ce qui change c'est le nombre de boucles, imagine que tu tapes un mot, en analysant chaque lettre puis en les rassemblant ca donne 8000, il va y avoir 2000 boucles !!
                                    Si tu prend un mot que quand tu rassembles ca te donne 9500, il va y avoir 500 boucles !!
                                    pour le decrypteur c'est aps le résultat qui compte, mais le nombre de boucles, et je sèche carrément la !!! :(
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      19 décembre 2005 à 11:58:20

                                      avec ton code on trouve toujours 10000 c'est normal???
                                      edit : dsl j'avais pas vu... :p
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        19 décembre 2005 à 11:59:38

                                        Citation : Bork0

                                        Ouais c'est normal, en fait ce qui change c'est le nombre de boucles, imagine que tu tapes un mot, en analysant chaque lettre puis en les rassemblant ca donne 8000, il va y avoir 2000 boucles !!
                                        Si tu prend un mot que quand tu rassembles ca te donne 9500, il va y avoir 500 boucles !!
                                        pour le decrypteur c'est aps le résultat qui compte, mais le nombre de boucles, et je sèche carrément la !!! :(



                                        effectivement c'est pas simple mais si tu y arrive, ca me parait efficace comme systeme lol qui penserer a ça :D
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          19 décembre 2005 à 21:31:50

                                          je n'arrive pas à analyser un mot ou une phrase il ne prends que la lettre.merci de m'aider.
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          [c] crypteur : marche a suivre

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown