Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

Passwortliste erstellen: In einer Schleife wird immer dasselbe (Zufalls)Passwort erstellt
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

Passwortliste erstellen: In einer Schleife wird immer dasselbe (Zufalls)Passwort erstellt

beantworten | zitieren | melden

Hallo,
wie kann ich eine Liste von Passwörtern erzeugen= Ich habe die Methode für das Erzeuegen. Aber wenn ich sie mehrmals aufrufe, erscheint immer dasselbe Passwort.
Verstehe nicht nicht so ganz. Eiegenltiuch müsste er bei jedem Schleifendurchlauf ein neues Passwort erzeugen??


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication3
{
    class Program
    {

        public static string CreateRandomPassword(int passwordLength)
        {
            string allowedChars = "[email protected]$?_-";
            char[] chars = new char[passwordLength];
            Random rd = new Random();
            
            for (int j = 0; j < passwordLength; j++)
            {
                chars[j] = allowedChars[rd.Next(0, allowedChars.Length)];
            }
            rd = null;
            return new string(chars);
        }

        static void Main(string[] args)
        {
            for (int i=0; i<20; i++)
            {
                Console.WriteLine(Program.CreateRandomPassword(10));
            }
            Console.WriteLine(Program.CreateRandomPassword(5));
        }
    }
}

private Nachricht | Beiträge des Benutzers
ujr
myCSharp.de - Experte



Dabei seit:
Beiträge: 1770

beantworten | zitieren | melden

[FAQ] Random.Next liefert eine Zeit lang die gleiche Zufallszahl - Warum? Wie geht es richtig?
private Nachricht | Beiträge des Benutzers
Coffeebean
myCSharp.de - Team

Avatar #avatar-3295.gif


Dabei seit:
Beiträge: 2459
Herkunft: Deutschland/Schweiz

beantworten | zitieren | melden

Hallo degri2006,

Random.Next nimmt bei der Berechnung die Zeit. Die ist bei dir und den heutigen Rechner nahezu gleich, daher hast du immer dasselbe Passwort, weil die Nummern immer gleich sind.

Btw: Wenn du das Debuggst, dann bekommst du andre Passwörter. Es sei denn, du debuggst so schnell wie dein Rechner ;)

Definier das Random ausserhalb und setz es nicht auf null, dann sollte es gehen.

Etwa so:


 public static string CreateRandomPassword(int passwordLength, Random random)
        {
            string allowedChars = "[email protected]$?_-";
            char[] chars = new char[passwordLength];
            

            for (int j = 0; j < passwordLength; j++)
            {
                int index = random.Next(0, allowedChars.Length);
                chars[j] = allowedChars[index];
            }

            return new string(chars);
        }

        static void Main(string[] args)
        {
            Random random = new Random();

            for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(Program.CreateRandomPassword(10, random));
            }
            Console.WriteLine(Program.CreateRandomPassword(5, random));

            Console.ReadLine();
        }

Schaue auch...da war einer schneller...;)

Gruss

Coffeebean
private Nachricht | Beiträge des Benutzers
degri2006
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

Vielen Dank!! Ich habe den ganzen Vormittag damit verbracht. Im Debugger lief alles richtig, nur wenn es um was ging, war alles Mist. War total verwirrt.
private Nachricht | Beiträge des Benutzers
Mallett
myCSharp.de - Member



Dabei seit:
Beiträge: 176

beantworten | zitieren | melden

Das sind allerdings recht schwache Passwörter, wenn man den Erstellungszeitpunkt kennt, kann man die alle rekonstruieren.
private Nachricht | Beiträge des Benutzers

Moderationshinweis von herbivore (20.03.2014 - 23:28:46):

Die Frage aus dem Startbeitrag wird in der FAQ vollständig und umfassend beantwortet. Daher bitte immer erste in der FAQ schauen, bevor unnötig ein neuer Thread ausgemacht wird. Siehe und beachte [Hinweis] Wie poste ich richtig? Punkt 1.1.