Ein etwas anderer Passwortgenerator.. funktioniert das überhaupt?

SFDrake1904

Cadet 3rd Year
Registriert
Apr. 2005
Beiträge
51
Guten Morgen^^!

Habe mir überlegt einen Passwortgenerator zu basteln und bin dabei auf eine Idee gekommen.
Würde das funktionieren?

Code:
//n = Anzahl der Zeichen
// i = Zählvariable; i = 0;
while(i != n) {
      srand((unsigned)time(NULL));
      printf("%c", (char)rand());
      i++;
}

Es wird also zufällig ein Zeichen ausgewählt.
Die Dinge bei denen ich unsicher bin sind folgende:
1. Die Zufallszahl kann einen Wert über 255 erreichen. Was würde dann passieren?
2. Würden Formularfelder bei Anmeldungen den Zeichensalat überhaupt annehmen (sind ja nicht nur Buchstaben)

Sry für die blöde Frage, aber mir kam die Idee spontan, deshalb wollt ich hier mal nachfragen.

Bin dankbar für Antworten!

Drake
 
Schau dir mal eine ASCII Tabelle an.
srand() muss nur einmal eingesetzt werden, also vor der Schleife.
Der Bereich, den die Zufallszahl erreichen kann, sollte auf darstellbare Zeichen eingegrenzt werden.
Formulare sollten damit dann kein Problem haben.
 
SFDrake1904 schrieb:
Code:
(char)rand());

Dieses Konstrukt kann Probleme machen. Zuerstmal kann char signed oder unsigned sein, je nach Compiler. rand liefert aber nur Werte zwischen 0 und RAND_MAX. Liefert rand() einen Wert, der nicht in (signed) char darstellbar ist (was sehr wahrscheinlich ist), so ist das Ergebnis des casts zwar nicht undefiniert, aber laut Sprachstandard "implementation defined". Falls sich das Programm für dich dann richtig verhält ist das okay, portabel ist es aber nicht.

Und damit ein Forumlar den generierten String als Eingabe akzeptiert, sollte der Wertebereich der zufälligen Zahlen zwischen 32 und 127 liegen (alle darstellbaren Zeichen des ASCII-Satzes (>127 ist kein ASCII mehr)).

Ansonsten, WingX hat's ja schon gesagt, das srand muss vor die Schleife, da du sonst die Saat für den Zufallsgenerator immerwieder auf denselben Wert setzt (time() ändert sich nur im Sekundentakt) und ständig die selbe "Zufallszahl" aus rand() rausbekommst.
 
Danke für die schnellen Antworten! :)

Werd das Programm mit den Änderungen dann heute noch erstellen!
 
Zurück
Oben