Partage
  • Partager sur Facebook
  • Partager sur Twitter

Notions de cryptage

Help!

Sujet résolu
    17 janvier 2006 à 11:24:06

    Salut les gars!

    J'aimerais créer un logiciel de cryptage/décryptage (en C), mais j'ai aucune notion en cryptage. Quelqu'un pourrait m'aider? :o
    • Partager sur Facebook
    • Partager sur Twitter
      17 janvier 2006 à 12:46:48

      Tu pourras mettre les caractères que l'utilisateur entrent en code hexadécimal :euh: ou un truc du genre
      • Partager sur Facebook
      • Partager sur Twitter
        17 janvier 2006 à 12:50:31

        Ou tu peux commencer par augmenter la valeur ASCII de chaque caractères de x.
        Ce n'est pas vraiment du cryptage à proprement parler, mais bon ton texte ne ressemblera plus a rien :D ca c'est sur !
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2006 à 14:40:40

          Tiens va sur ce site pour apprendre TOUTE la crypto, bien sur y a pas les codes sources en C, mais ils t'expliquent pleins de choses !
          La cryptographie expliquée
          • Partager sur Facebook
          • Partager sur Twitter
            28 janvier 2006 à 12:29:47

            Salut, je profte de ce topic pour poser une question!
            On a vu que l'ordinateur ne savait retenir que des nombre en binaire.
            J'ai découvert la table ASCII et j'ai vu qu'il y avait pour chaque lettre un nombre correspondant.
            Par exemple, 097 = a = 01100001.

            Mais comment l'ordinateur sait qu'il doit écrire "a" et pas "097" ?

            Je comprend pas trop..
            Merci d'avance
            • Partager sur Facebook
            • Partager sur Twitter
              28 janvier 2006 à 13:05:22

              ce n'est pas l'ordinateur qui le sait, l'ordinateur lui est très très très très très très bête : il ne comprend que le binaire

              c'est le compilateur qui se charge de se travail en fonction de ce que le programmateur a demandé.
              • Partager sur Facebook
              • Partager sur Twitter
                28 janvier 2006 à 13:42:30

                ok, mais alors admetons qu'on demande au programme de nous dire la valeur d'une certaine variable.
                Il va lire dans l'ordi: 01100001
                alors le programme va nous afficher quoi?
                "a" ou 97 ?
                comment il connait la différence? puisque la valeur en binaire dans l'ordi peut vouloir dire "a" ou "97"...

                enfin, je comprend pas trop...

                EDIT:
                Voilà, j'ai fait une représentation en dessin de ce que je pense qu'il se passe avec l'ordinateur et le compilateur:

                ici on demande au compiliateur de mettre la lettre "a" dans l'ordinateur.
                L'ordinateur traduite en binaire --> 01100001

                Image utilisateur

                Puis l'ordinateur a ce nombre dans sa mémoire(01100001).

                et lorsque le compilateur lit dans l'ordinateur il voit ce nombre: 01100001
                alors il le traduit par "a" ou 97 ???
                Image utilisateur

                Voilà, j'espère que j'ai été assez clair ^^ .
                • Partager sur Facebook
                • Partager sur Twitter
                  28 janvier 2006 à 14:08:35

                  Et bien si tu fais :
                  printf("%c",lettre);

                  Il affichera a.
                  Et si tu fais :
                  printf("%d",lettre);

                  Il affichera 97 enfin je crois que c'était ça ta question ? :euh:
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 janvier 2006 à 14:25:55

                    En fait, je sais comment le faire pour qu'il affiche des lettres ou chiffres.
                    Moi ce que je voulais savoir c'est comment ça fonctionne!
                    Comment le programme sait qu'il a à faire à un nombre ou à une lettre puisqu'ils s'écrivent de la même manière.

                    Mais merci quand même ^^ .
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 janvier 2006 à 14:34:06

                      C'est au système de décider.
                      Il y a par exemple le formatage de printf/scanf pour indiquer ce qu'il est censé utiliser, après c'est de toutes façons à lui de décider quelle représentation il utilise (binaire, décimal, hexadécimal, ASCII, une autre table de conversion, ...)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 janvier 2006 à 14:37:28

                        hmm, je suis pas sûr d'avoir tout compris... :euh:
                        mais donc en fait, si on fait printf ("%ld", variable) il traduira la valeur de la variable (01100001) par 97.

                        Et si on fait printf("%c", variable) il traduira la valeur de la variable (01100001) par "a" .

                        C'est ça?

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

                        int main(int argc, char *argv[])
                        {
                          long variable = 97;
                          printf("%c \n", variable);
                          system("PAUSE");     
                          return 0;
                        }


                        je viens de tester ce code:
                        et le programme me renvoie: "a"
                        Donc ça corrobore ce que je pensait!
                        J'ai enfin compris :D
                        donc si on met %ld on a le chiffre décimal, si on met %c on a la valeur ASCII et si on met %p on a la valeur héxadécimale!

                        Trop cool! :D (je suis content d'avoir compris comment "fonctionne" mon ordinateur ^^ ).

                        et comment on fait pour afficher la valeur binaire?

                        Merci beaucoup!

                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          28 janvier 2006 à 14:44:59

                          Il me semble bien que oui. De toute façon pour l'ordinateur ton caractère sera toujours un nombre en binaire. C'est après au système d'exploitation ou au BIOS de l'interprêter. Le BIOS peut quand même gérer un minimum l'écran pour t'afficher des caractères à partir de nombres. Quand tu as une interface graphique, c'est elle qui gère l'affichage du caractère, en prenant le nombre puis en le remplaçant à partir de la police et d'autres trucs comme ça que je connais mal.

                          En tout cas, ce n'est qu'une question d'interprêtation : tout est 1 ou 0, tout est nombre. Tu l'interprêtes, à l'aide par exemple de %d ou %c, comme tu veux.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 janvier 2006 à 14:46:28

                            ok merci, j'ai éditer mon post en-dessus, car j'ai compris!

                            Merci à tous!
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 janvier 2006 à 14:58:43

                              printf("%c", 97);
                              printf("%c", 'a');

                              Ces deux lignes donneront exactement le même résultat (sur une plateforme utilisant l'ASCII comme table de conversion).
                              Ca t'aidera peut-être à comprendre.
                              Et la valeur de 'a' n'est pas pré-déterminée, c'est à l'exécution et non à la compilation qu'on peut déterminer si elle vaut 97 ou n'importe quoi d'autre.

                              Les types de printf servent à indiquer au système : 01100001 est à afficher en tant que [tel type].

                              <edit> J'aurais pas du laisser ma réponse en friche 10 minutes :-°
                              Je laisse tout de même. Evite quand même d'utiliser %c pour une variable de type long, tu peux très bien faire char truc = 97;
                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 janvier 2006 à 15:05:12

                                ok, donc j'ai bien compris ^^ .
                                Merci...

                                et juste, comment afficher la valeur de la variable mais en type binaire?

                                voilà, et merci encore!
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 janvier 2006 à 16:13:49

                                  J'ai regardé, il n'existe pas à ma connaissance (et dans les docs que j'ai lues) de format %.. pour le binaire, ma ca se code facilement en deux lignes de C.

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Notions de cryptage

                                  × 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