Eindeutige ID durch md5 und microtime?
Eindeutige ID durch md5 und microtime?
am 27.07.2006 17:36:41 von Jochen
Hallo,
ich will mit folgendem Code eine eindeutige, 10stellige ID erzeugen:
$neue_id =3D substr(md5(microtime()), 0, 10);
Meine Frage:
Ist durch "microtime" und "md5" gewährleistet, dass es keine doppelten
Ergebnisse gibt? Kennt sich damit jemand aus?
Vielen Dank schon mal für die Hilfe.
Gruß
Jochen
Re: Eindeutige ID durch md5 und microtime?
am 27.07.2006 17:58:06 von Christian Schmelzer
jochen@10west.de wrote:
> Hallo,
>
> ich will mit folgendem Code eine eindeutige, 10stellige ID erzeugen:
> $neue_id = substr(md5(microtime()), 0, 10);
>
> Meine Frage:
> Ist durch "microtime" und "md5" gewährleistet, dass es keine doppelten
> Ergebnisse gibt? Kennt sich damit jemand aus?
>
> Vielen Dank schon mal für die Hilfe.
>
> Gruß
> Jochen
Hallo,
nein, gewährleistet ist das nicht. Such mal eher nach uuid oder oder nimm
ein auto_increment aus der db, dann sind die IDs aber fortlaufend.
Christian
Re: Eindeutige ID durch md5 und microtime?
am 27.07.2006 17:58:37 von Joerg Behrens
jochen@10west.de schrieb:
^^^^^^^^^^^^
Bitte Namen mal im Newsclient hinterlegen.
> Hallo,
>
> ich will mit folgendem Code eine eindeutige, 10stellige ID erzeugen:
> $neue_id = substr(md5(microtime()), 0, 10);
>
> Meine Frage:
> Ist durch "microtime" und "md5" gewährleistet, dass es keine doppelten
> Ergebnisse gibt?
Nein ist es nicht. Selbst wenn wir mal ausschliessen das 2 IDs zur
gleichen Zeit erstellt werden bleibt das eigentliche Problem das md5 nur
ein HASH ist und das verschiedene Zeichenketten den selben Hash ergeben
koennen.
Dies laesst sich durch den Einsatz von sha1 anstelle von md5 etwas
entschaerfen, sprich die wahrscheinlichkeit einer Dublette sinkt.
Spaetestens durch das begrenzen auf 10 Ziffern erhoehst du die
Wahrscheinlichkeit allerdings wieder.
Gruss
Joerg
--
TakeNet GmbH http://www.takenet.de
97080 Wuerzburg Tel: +49 931 903-2243
Alfred-Nobel-Straße 20 Fax: +49 931 903-3025
Re: Eindeutige ID durch md5 und microtime?
am 27.07.2006 18:01:06 von Christian Schmelzer
Christian Schmelzer wrote:
> jochen@10west.de wrote:
>> Hallo,
>>
>> ich will mit folgendem Code eine eindeutige, 10stellige ID erzeugen:
>> $neue_id = substr(md5(microtime()), 0, 10);
>>
>> Meine Frage:
>> Ist durch "microtime" und "md5" gewährleistet, dass es keine
>> doppelten Ergebnisse gibt? Kennt sich damit jemand aus?
>>
>> Vielen Dank schon mal für die Hilfe.
>>
>> Gruß
>> Jochen
>
> Hallo,
> nein, gewährleistet ist das nicht. Such mal eher nach uuid oder oder
> nimm ein auto_increment aus der db, dann sind die IDs aber
> fortlaufend.
>
>
> Christian
Und globaler noch GUID.
Christian
Re: Eindeutige ID durch md5 und microtime?
am 27.07.2006 18:05:52 von Carsten Wiedmann
jochen@10west.de schrieb:
> ich will mit folgendem Code eine eindeutige, 10stellige ID erzeugen:
Passend zum Thema:
http://de.php.net/manual/en/function.uniqid.php
Gruß
Carsten
Re: Eindeutige ID durch md5 und microtime?
am 27.07.2006 22:56:57 von do.not.REMOVETHAT
jochen@10west.de schrieb:
> Ist durch "microtime" und "md5" gewährleistet, dass es keine doppelten
> Ergebnisse gibt? Kennt sich damit jemand aus?
Gewährleistet nein, aber *sehr* wahrscheinlich.
Grüße, Matthias