Laden...

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

Erstellt von degri2006 vor 10 Jahren Letzter Beitrag vor 10 Jahren 1.686 Views
Thema geschlossen
D
degri2006 Themenstarter:in
21 Beiträge seit 2009
vor 10 Jahren
Passwortliste erstellen: In einer Schleife wird immer dasselbe (Zufalls)Passwort erstellt

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 = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@$?_-";
            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));
        }
    }
}


2.207 Beiträge seit 2011
vor 10 Jahren

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 = "abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789!@$?_-";
            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

D
degri2006 Themenstarter:in
21 Beiträge seit 2009
vor 10 Jahren

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.

M
171 Beiträge seit 2012
vor 10 Jahren

Das sind allerdings recht schwache Passwörter, wenn man den Erstellungszeitpunkt kennt, kann man die alle rekonstruieren.

Hinweis von herbivore vor 10 Jahren

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.

Thema geschlossen