Feedback

Passwort generieren

private string PW(int Länge)
{  
  string ret = string.Empty;
  System.Text.StringBuilder SB = new System.Text.StringBuilder();
  string Content = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw!öäüÖÄÜß"§$%&/()=?*#-"";

6 Kommentare

  1. Man muss Random wiederverwenden, sonst werden keine vernünftigen Zufallszahlen erstellt. Das merkt man, wenn man eine Methode die Random selbst erzeugt in einer Schleife sehr oft hintereinander aufruft.

    daher:
    private Random mRandom = new Random();

    Zitat aus MSDN:
    Die Erzeugung der Zufallszahlen startet von einem Startwert. Wenn derselbe Startwert wiederholt verwendet wird, führt dies dazu, dass dieselbe Zahlenfolge erzeugt wird. Eine Möglichkeit, die Erzeugung unterschiedlicher Zahlenfolgen zu gewährleisten, besteht darin, den Startwert zeitabhängig zu machen. Dabei wird für jede neue Instanz von Random eine neue Zahlenfolge erzeugt. Standardmäßig verwendet der parameterlose Konstruktor der Random-Klasse die Systemuhr zum Generieren des Startwerts, während der parametrisierte Konstruktor einen Int32-Wert auf Grundlage der Anzahl von Ticks in der aktuellen Zeit annehmen kann. Da die Uhr jedoch eine endliche Auflösung hat, werden durch das Erstellen von unterschiedlichen Random-Objekten mit dem parameterlosen Konstruktor unmittelbar nacheinander Zufallszahlengeneratoren erstellt, die identische Sequenzen von Zufallszahlen erzeugen.

    http://msdn.microsoft.com/de-de/library/vstudio/system.random.aspx

  2. Hi,
    hätte noch nen Einzeiler dafür:

    [code]
    private Random rnd = new Random();
    public string CreatePassword(int pwLength, string allChars = „ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz0123456789!@$?_-[](){}=§$%#&/“)
    {
    return new string(Enumerable.Repeat(allChars, pwLength).Select(s => s[rnd.Next(s.Length)]).ToArray());
    }
    [/code]

    Grüße

  3. Nach 14 Jahren würde ich sagen, die so erzeugten Passwörter sind Müll.

    Mit dieser Methode können auch zufällige Passwörter in dieser Form entstehen: 123456…, ABCDEFG…
    Damit hätte man dann nichts gewonnen. Es muss sichergestellt werden, dass auch mindestens jeweils ein Zeichen aus dem jeweiligen Pool enthalten ist (Groß- Kleinbuchstaben, Zahlen, Sonderzeichen etc.).
    Das Thema Wörterbücher vernachlässige ich hier mal.

    https://www.bsi-fuer-buerger.de/BSIFB/DE/Empfehlungen/Passwoerter/passwoerter_node.html