Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » PasswordChar Erklärung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
21.01.2005, 20:56 Uhr
ExZero



Also, ich möchte gerne eine Benutzereingabe für den user verschlüsseln, also alle eingegebenen Zeichen als * darstellen.
(in einer konsolenanwedung)

Jetzt hab ich hier im Forum nur einen Thread gefunden, wo darüber gesprochen wird, aber absolut nichts erklärt wird.(google hat mir auch ned geholfen)

Jetzt würde ich gerne ganz genau erfahren welche header ich brauche, wie der Befehl zu benutzen ist, und ob es sinnvoll ist, da es vielleicht eine bessere Möglichkeit gibt.
--
_____________________________________

Ich wollte die Welt verändern, aber leider war sie nicht Open-Source
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.01.2005, 22:10 Uhr
RedEagle




C++:
#include <conio.h>
#include <iostream>
using namespace std;

int main(int argc, char *argv[])
{

char vorlage[20] = "0815";
char pw[20];

for(int i=0; i<20; i++)
{
  pw[i] = getch();
  cout << "*";
  if(pw[i] == '\n')
  {
   if(strcmp(pw,vorlage) == 0) cout << "PW ist Richtig";
   else cout << "PW ist Falsch";
  }
}

return 0;
}



Ist ungetestet, aber so in etwa sollte es funktionieren
--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.01.2005, 22:45 Uhr
ExZero



Genial, danke, theoretisch hätte ich auch selbst draufkommen können, aber die idee mit getch in ner schleife is mir ned eingefallen :)
--
_____________________________________

Ich wollte die Welt verändern, aber leider war sie nicht Open-Source
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.01.2005, 16:41 Uhr
ExZero



Ok, ich hab deinen Code getestet, und hab meine eigene Version davon in meinen Code implementiert.

Bei deiner Version funtioniert das '\n' Ding nicht, d.h. er nimmt ENTER als ganz normalen Buchstaben.

Und bei meiner Version stürzt er nach der ersten Buchstabeneingabe ab.

Ich poste mal die Funktion:

C++:

int password(int,char);

int password(int size,char passwd[size])
{
    char passwdinput[size];
    int cnt;

    printf("Passwort: ");
          
    for(cnt = 0;cnt < 20;cnt++)
        {
            fflush(stdin);
            passwdinput[cnt] = getch();
            printf("*");
            
            if(passwdinput[cnt]='\n')
            {
                if(strcmp(passwdinput,passwd) == 0) break;
                else{printf("Falsches Passwort!");return 0;}
            }
        }
}




Ich bitte um Debug-Möglichkeiten oder Verbesserungen
--
_____________________________________

Ich wollte die Welt verändern, aber leider war sie nicht Open-Source
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.01.2005, 20:53 Uhr
RedEagle



Hier meine Optimierte Version: (Läuft garantiert (getestet))

C++:


    #include <conio.h>
    #include <windows.h>
    #include <iostream>
     using namespace std;

    int main(int argc, char *argv[])
    {

     const int  max_chars   = 20;
     const char Platzhalter = '*';
     const char Passwort[max_chars] = "7701\0";
           char Eingabe[max_chars];
           char Zeichen;

     for(int Versuche=0; Versuche < 3; Versuche++) //3 Versuche
     {
      system("CLS");     //Bildschirm löschen
       Eingabe[0] = '\0'; //Eingabe auf 0 setzten

       for(int chars=0; chars < max_chars; chars++) //Maximal 20 Zeichen
       {
         Zeichen = getch(); //Zeichen einlesen
         if(Zeichen == VK_RETURN) //Wurde "Return" gedrückt?
         {
           Eingabe[chars] = '\0'; //"Return" wurde gedrückt
           cout << endl;
           if(strcmp(Eingabe,Passwort) == 0) //Stimmt Eingabe und Passwort überein
           {
            cout << "Passwort richtig" << endl;
            Sleep(200); //Das man die Ausgabe noch lesen kann
            return 0;
           }
           else
           {
            cout << "Passwort falsch" << endl;
            Sleep(200); //Das man die Ausgabe noch lesen kann
            break;
           }
         }
         else //Wenn kein "Return" gedrückt wurde, das Zeichen der Eingabe hinzufügen
         {
           Eingabe[chars] = Zeichen;
           cout << Platzhalter; //Platzhalter ausgeben
         }
       }

     }

     return 0;
    }


--
MFG RedEagle
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.01.2005, 22:47 Uhr
ExZero



Danke, dass du dir soviel Arbeit wegen mir machst, ich werds gleich auf C portieren und einfügen.
Jetzt bin ich der Beta wieder näher ^^
--
_____________________________________

Ich wollte die Welt verändern, aber leider war sie nicht Open-Source

Dieser Post wurde am 22.01.2005 um 22:47 Uhr von ExZero editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
23.01.2005, 01:50 Uhr
~tester
Gast


test
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
23.01.2005, 01:51 Uhr
~tester
Gast


löscht mal meine beiträge. wollte nur testen ob man hier unregistriert posten kann. danke.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: