Kevin T.: Zufallszahlen / Passwörter erzeugen

Hallo liebes Forum,

ich benötige als Kundenpasswörter ca. 6.000 EINDEUTIGE Zahlen/Buchstabenreihen in der Form

AAA - BBB - CCC

AAA - Ziffern von 0 bis 1
BBB - Buchstaben von A bis Z
CCC - gemischt (Ziffern und Buchstaben)

Mein Gehirn läuft heute Morgen auf Sparflamme, deshalb bin ich für Tipps und Denkansätze sehr dankbar. Braucht kein fertiges Script zu sein.

Viele liebe Grüße
Kevin

  1. hi

    AAA - Ziffern von 0 bis 1

    (ich geh jetzt mal von 0-9 aus, ist doch richtig? :))

    du suchst also ein dreistellige zahl zwischen 0 und 999, wenn die zahl kleiner 100 ist kommt 1 null, wenn sie kleiner 10 ist kommen 2 davor.

    BBB - Buchstaben von A bis Z

    du möchtest also zufällig einen von 26 buchstaben auf jeder position haben

    CCC - gemischt (Ziffern und Buchstaben)

    hier benötigst du also zufällig 26 buchstaben plus die 10 ziffern

    so long
    ole
    (8-)>

    --
    Vegetables? Yes,...for example garlic!
    1. (ich geh jetzt mal von 0-9 aus, ist doch richtig? :))

      ja :-)

      aber was mich vor allem interessiert, ist diese Vorgehensweise richtig bei 6.000 Zahlen:

      1. Zufallsstellen erzeugen
      2 .Zufallszahl in der DB nachschlagen, ob schon vorhanden
      3. Zufallszahl in die DB schreiben

      Grüße
      Kevin

      1. hi

        aber was mich vor allem interessiert, ist diese Vorgehensweise richtig bei 6.000 Zahlen:

        warum sollte sie nicht? ist doch recht fix gemacht.
        du erzeugst pro passwort 7 zufallszahlen
        und ordnest 6 indizes den entsprechenden wert zu
        und fragst (im optimal fall) 5999 die datenbank ab.

        dürfte nicht die größte last für deinen rechner/db werden.

        so long
        ole
        (8-)>

        --
        Vegetables? Yes,...for example garlic!
      2. Hello,

        (ich geh jetzt mal von 0-9 aus, ist doch richtig? :))

        ja :-)

        aber was mich vor allem interessiert, ist diese Vorgehensweise richtig bei 6.000 Zahlen:

        1. Zufallsstellen erzeugen
          2 .Zufallszahl in der DB nachschlagen, ob schon vorhanden
        2. Zufallszahl in die DB schreiben

        Das kann man alles in einem Aufwasch machen.

        insert into tabelle1 (zufall) values(rand()*10000000000);

        Das würde eine zehnstellige Zufallszahl in die Spalte zufall einfügen.
        Wenn die Spalte zufall z.B. vom Typ Decimal (10,0) ist, wird der Nachkommawert
        automatisch abgeschnitten, und wenn die Spalte einen Unique Index hat, kann man
        jede Zahl auch nur einmal eintragen.

        Das wiederholt man dann in der API (z.B. PHP, PERL, BASIC-Dialekte, C-Programm, ...) solange, bis die angeforderte Anzahl Datensätze erreicht ist. Abbruchbedingung für Hänger auch hier bitte
        nicht vergessen.

        Das Statement wird von den meisten SQL-Datenbanken so, oder zumindest so ähnlich, unterstützt.

        Harzliche Grüße aus http://www.annerschbarrich.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
  2. Hello,

    1. Schritt
      Charactger-Set festlegen
    2. Schritt
      Länge des Passwortes festlegen oder auswürfeln
    3. Schritt
      Schleife sooft bis Länge des Passworte erreicht -->
        Index auswürfeln innerhalb der Länge des Charactersets
        Mit dem Index auf das Characterset zugreifen und den Character an das Passwort anhängen
      <--
    4. Schritt
      Prüfen, ob dieses Passwort schon in der Liste steht (Datei, Monsterarray)
    5. Schritt
      Wenn nicht drinsteh, hinzufügen
      Wenn drinsteht, nochmal von vorne. Sinnvollerweise eine Kontrollzähler mitlaufen lassen,
      der bei Überschreitung einer gewissen Anzahl von Wiederholungsversuchen mit Fehlermeldung
      abbricht. Nicht, dass es ein Endlosprogramm wird ;-)

    Viel Erfolg

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. der bereich von 000 AAA 000 bis 111 ZZZ ZZZ ist mehr als ausreichend für 6000 kombinationen. (2^3 * 26^3 * 36^3)
    es kann linear vorgegangen werden (beispiel mit lücken).

    schleife i von 0 bis 5999 (oder zb. 1 bis 24000 step 4)
    * 1. Block generieren
    1.stelle: = (string) i mod 2
    2.stelle: = (string) i mod 2^2
    3.stelle: = (string) i mod 2^3
    * 2. Block generieren
    1.stelle: = chr( i mod 26 + dec('A') )
    2.stelle: = chr( i mod 26^2 + dec('A') )
    3.stelle: = chr( i mod 26^3 + dec('A') )
    * 3. Block generieren
    1.stelle: = chr( i mod 36 + dec('0') )
    2.stelle: = chr( i mod 36^2 + dec('0') )
    3.stelle: = chr( i mod 36^3 + dec('0') )

    1. Eine gute Idee, aber würde die Linearität nicht dazu führen, dass Passwörter errechnet werden können?

      Gruß
      Kevin

      1. Eine gute Idee, aber würde die Linearität nicht dazu führen, dass Passwörter errechnet werden können?

        du hast einen bereich von kombinationen. jedes passwort befindet sich in einem bereich von kombinationen. welcher nun besetzt ist, spielt ja keine rolle. es sei denn, man probiert alle kombinationen aus. so machen das ja manche hacker.
        allerdings reicht das passwort ja nicht allein. es gehört ja noch eine zweite information dazu. nun wird der bereich noch einmal potenziert.
        würde sich das passwort aus einem algorythmus ergeben, wäre die gefahr natürlich groß, wenn man die anderen faktoren kennt.

        wie du nun die generierten passwörter deinen benutzern zuordnest ist ja niemandem bekannt. es ging dir ja nur um die generierung.
        wenn die passwörter nun von 1 an linear generiert werden, ist bekannt, daß nur der anfang des bereiches für passwörter benutzt wird. hier wäre die chance größer, dies herauszufinden.
        daher kannst du in der schleife die schrittweite erhöhen und die passwörter beser über den bereich verteilen.

        1. Wenn Du Lust und Zeit hast, würde ich mich über noch mehr Erklärung freuen! Danke erstmal bis hierher.

          Grüße KEvin