Kalle_B: Kryptische, aber einmalige Gruppen-ID generieren

Hallöle,

ich benötige eine zufällige ID, die kryptisch genug ist, um nicht "erraten" werden zu können, aber auch (zumindest für ca. zwei Jahre) so einmalig, dass sie kein zweites Mal generiert werden kann.

Erfüllt die Session-ID diese Bedingung?

Habe mir auch mt_rand durchgelesen, da steht nichts von Einmaligkeit.

MfG Kalle

  1. Hallo,

    mt_rand() benutzt offensichtlich den Mersenne Twister, und das ist ein (Pseudo-)Zufallszahlengenerator. Und Zufallszahlen haben, wenn sie richtig erzeugt werden, die Eigenschaft, auch mehrmals auftreten zu können - ggf. sogar hintereinander (mit den entsprechenden Wahrscheinlichkeiten natürlich). Es muss nicht sein, aber es kann. Und darum eignen sich solche Generatoren allein nicht für diese Aufgabe.

    Ich weiss nicht, wie PHP die Session-IDs erzeugt. Meine Idee ist, einen möglichst genauen Timestamp zu holen (dabei ist zu prüfen, dass dieser nicht 2+ mal vorkommt, was bei schnellen Rechnern durchaus möglich sein kann), und an ihn eine gute Zufallszahl zu hängen (nicht addieren, XORen oder so, dass garantiert keine Einmaligkeit). Allerdings bin ich mir nicht sicher, ob das sicher ist *gg*.

    Gruß

  2. echo $begrüßung;

    ich benötige eine zufällige ID, die kryptisch genug ist, um nicht "erraten" werden zu können, aber auch (zumindest für ca. zwei Jahre) so einmalig, dass sie kein zweites Mal generiert werden kann.

    uniqid() kann ausreichend sein. Das basiert auf der aktuellen Zeit in Mikrosekunden. Es bietet noch zwei Parameter, mit der man die "Eindeutigkeit erhöhen" kann.

    Ein generelles Konzept ist die UUID. PHP bring keine Funktion mit, eine solche zu erzeugen. Die Userkommentare zu uniqid() enthalten jedoch einige Implementationen. Außerdem kann MySQL UUIDs erzeugen.

    echo "$verabschiedung $name";