Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mots de passes

******

Sujet résolu
    6 mai 2008 à 19:47:32

    Bonjour ,

    j'aimerais savoir comment faire pour écrire un mot sous forme d'etoiles à l'ecran
    Par exemple , la console me demande de rentrer un mot de passe, et je veux que ce mot de passe soit crypté sous la forme de****

    comment faire pour transfomer les chaines de caracteres en etoiles?

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      6 mai 2008 à 19:51:35

      Ce n'est pas possible de manière simple. Quand tu tapes à l'écran, ton programme ne réagi que lorsque tu tapes "enter" tout ce qui se passe avant n'est pas géré par ton programme mais par ta console, ce qui fait que les caractères s'affichent comme dans toutes les consoles.

      Pour afficher des étoiles, il faut gérer l'affichage via une li comme conio.h ou d'autres.
      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        6 mai 2008 à 19:55:17

        Comment font alors les sites ou meme windows quand il faut rentrer un mot de passe?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          6 mai 2008 à 20:00:24

          Citation : nonococodisco

          Comment font alors les sites

          Le fureteur s'en occupe.

          Citation : nonococodisco

          ou même windows quand il faut rentrer un mot de passe?

          La réponse de Nanoc ne t'éclaire pas?
          • Partager sur Facebook
          • Partager sur Twitter
            6 mai 2008 à 20:21:44

            ben tu peux utiliser l'api windows, mais c'est un peu compliqué a mon avis.


            bon je te le mets en C89/90

            #include <windows.h>
            
            password DIALOG 0, 0, 105, 35
            STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION
            CAPTION "fichiers/001.ico" "Identification"
            FONT 12, "MS Shell Dlg"
            BEGIN
              LTEXT   "Password :", -1, 5, 10, 40, 12
              EDITTEXT 10, 45, 9, 50, 12, ES_PASSWORD
            END
            



            #include <stdio.h>
            #include <stdlib.h>
            #include <string.h>
            #include <windows.h>
            
                /*** GESTION  DES MOTS DE PASSE ***/
                    /*** GESTION API WINDOWS ***/
            char buf[32];
            
            //-------------------------------------------------------
            BOOL CALLBACK password(HWND h, UINT m, WPARAM w, LPARAM l)
            {
              switch(m)
              {
               case WM_COMMAND:
                  switch(LOWORD(w))
                  {
                    case IDOK:
                      GetWindowText(GetDlgItem(h, 10), buf, sizeof(buf));
                      EndDialog(h, TRUE);
                      return TRUE;
            
                    case IDCANCEL:
                      EndDialog(h, FALSE);
                      return FALSE;
                  }
                  break;
              }
              return FALSE;
            }
            



            et voila, tu as ta chaine de caractère qui est la saisie de l'utilisateur via une fenetre qui va s'ouvrir. Mais tu perds en portabilité, ce ne sera plus que compatible avec windows.
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 mai 2008 à 20:29:13

              faire une console avec QT... comme ca c'est toi qui a le controle
              • Partager sur Facebook
              • Partager sur Twitter
                6 mai 2008 à 22:15:20

                Comme la console est une application graphique qui redirige les entrées/sorties standard. Il n'y a pas de moyen portable simple pour le faire.
                • Partager sur Facebook
                • Partager sur Twitter
                  8 mai 2008 à 11:06:11

                  Si ton ide à conio.h ,tu peu utiliser getch ,comme ça :
                  #include <stdio.h>
                  #include <stdlib.h>
                  #include <conio.h>
                  int main()
                  {
                   char c=0;
                   while(1)
                   {
                   c=getch();    //c vaut la touche enfoncee 
                  printf("*");
                  }
                      
                  return 0;
                      }
                  

                  Malheureusement cette méthode ne marche que pour windows
                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 mai 2008 à 15:58:47

                    Citation : nimaje

                    Si ton ide à conio.h ,tu peu utiliser getch ,comme ça :

                    [CODE]

                    Malheureusement cette méthode ne marche que pour windows



                    C'est pas si pire...

                    Bien sur que je répète ce que tu as dit : c'est Windows-only


                    J'ai fait de grosse modifs à ton code pour qu'il soit dans la pensée C++. Et fonctionnel. Parce que le while( 1 ) c'est un peu trop long.

                    #include <iostream>
                    #include <string>
                    #include <conio.h>
                    
                    std::string saisir_mot_passe();
                    
                    int main()
                    {
                        std::string s;
                    
                        std::cout << "Veuillez saisir votre mot de passe" << std::endl;
                        s = saisir_mot_passe();
                    
                        std::cout << "Votre mot de passe est : " << s << ". Mouhahaha!" << std::endl;
                        
                        return 0;
                    }
                    
                    std::string saisir_mot_passe()
                    {
                        std::string mot_passe;
                        char c = '\0';
                    
                        
                        while( (c = getch()) != '\n' || c != '\r' )
                        {
                            mot_passe += c;
                            std::cout << "*";
                        }
                    
                        std::cout << std::endl;
                    
                        return mot_passe;
                    }
                    


                    Bon j'ai pas tester mais il ne devrait pas y avoir de "glitch"
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Mots de passes

                    × 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