Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo!

Ich brauche für ein Programm in C eine Benutzeranmeldung.

Für den User habe ich das Array user[16], dass somit 15 Zeichen + '\0'-Zeichen fassen kann. Das selbe habe ich als Array passwort[16].

Ich möchte nun eben bei der Eingabe des Passworts in das Array die Ausgabe "verschlüsseln", in dem ich für jedes eingegebene Zeichen ein * ausgebe.

Kann mir jmd. helfen, büdde!

Mit was für ner Art Schleife muss ich das Lösen? Wie löse ich das mit dem *? Kann ich stringweise einlesen oder zeichenweise?

Die IDE ist eine Borland C++ Builder Version 5.x

Reichen die Angabe oder braucht ihr einen Code?

MfG

Stefan

juhu!

sorry ich vergaß zu erwähnen, dass es ein konsolenprogramm ist.

mfg

stefan

danke für den schlauen tipp.


   puts("\n\n\nBitte anmelden!");

   puts("\n---------------");

   printf("\n\nUser: ");

   gets(user);

   password = getpass("Passwort: ");

   strcpy(password,passwort);

So sieht jetzt der Code aus.

Ich möchte jetzt schauen, ob der User / das Passwort stimmen (es gibt nur ein User). Wo hinterlege ich den User / das Passwort, damit ich drauf zugreifen kann?

Z.B. in einer Datei oder Datenbank. Je nachdem wie sicher das ganze sein soll, solltest du diese verschlüsseln.

Du könntest den Benutzernamen in Klartext in die Datei schreiben. Bei Passwörten bildet man für gewöhnlich eine Prüfsumme (z.B. MD5). Dabei wird ein Algorithmus auf das Passwort angewendet welcher einen Wert liefert (bei MD5 ein 32 Byte Wert). Dieser Algorithmus liefert mit der selben Eingabe immer die selbe Ausgabe. Man kann die Ausgabe aber nicht mehr in die Eingabe zurück wandeln.

Du würdest also die Prüfsumme des Passworts zu dem jeweiligen Benutzer in der Datei speichern und wenn der Benutzer sein Passwort eingibt dann generierst du die Prüfsumme der Eingabe und vergleichst sie mit der in der Datei.

das ganze soll aber nur was ganz rudimentäres sein ohne db und ohne verschlüsselung.

kannst du mir ma nen code posten, wie ich das hinkriege, nachdem ich mit getpass() des passwort eingelesen habe und dann auf das vorhandene passwort, meinetwegen "test" vergleichen kann.

der vergleich mit dem user per if abfrage funktioniert. nur des mit dem passwort geht net.

ich komm einfach net weiter und hab davon nicht so viel ahnung. ist meine erste benutzeranmeldung, die ich progge.

Hi thekbrothers,

zwei strings (char-Array) kann man mit der strcmp() Funktion vergleichen. Hier hab ich dir mal einen einfachen Ansatz zur Passworteingabe erstellt:


#include <stdio.h>
#include <string.h>
#include <conio.h>

#define PASSWORD_LENGTH 16

int getpass(char* hint, char* pass)
{
int ch;
int index=0;

if (hint)
printf("\n%s ",hint);

do
{
ch = getch();
switch(ch)
{
case 13: //Enter
break;
case 8: //Delete
break;
default:
pass[index]=ch;
index++;
printf("*");
}
} while (ch != 13 && index<PASSWORD_LENGTH);

pass[index]=0;

return strlen(pass);
}

int main(int argc, char* argv[])
{
char user[16+1];
char password[PASSWORD_LENGTH+1];
int bPasswordOK = 0;

printf("\n\n\nBitte anmelden!");
printf("\n---------------");
printf("\n\nUser: ");
gets(user);

do
{
getpass("Passwort: ",password);
if (strcmp(password,"Test")==0)
{
bPasswordOK = 1;
}
} while (bPasswordOK==0);

return 0;
}
[/PHP]

dank dir manfred. ich werd es gleich mal ausprobieren.

sehe ich richtig, dass ich für das passwort "test" auch n array nehmen kann, in dem das gespeichert ist?

mfg

stefan

sehe ich richtig, dass ich für das passwort "test" auch n array nehmen kann, in dem das gespeichert ist?

ja, genau richtig erkannt!

Entweder:


char* myPassword = "geheim";
...
if (strcmp(password,myPassword)==0)
{
bPasswordOK = 1;
}
...
[/PHP]

oder:

[PHP]
char myPassword[PASSWORD_LENGTH+1];
...
strcpy(myPassword,"geheim");
...
if (strcmp(password,myPassword)==0)
{
bPasswordOK = 1;
}
...

Danke Dir!

MfG

Stefan

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.