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