phpbar.de logo

Mailinglisten-Archive

AW: [php] uniqid

AW: [php] uniqid

Andreas Muller php_(at)_phpcenter.de
Thu, 28 Mar 2002 16:42:53 +0100


Hallo Wolfgang,

> Mit md5(md5(rand())) duerfte es auch bei Multiprozessorumgebung keine
> Probleme mehr geben. Ausserdem wird (bei mir jedenfalls) die ID
> in einer DB
> abgelegt und spaetestens da merkt man ob diese ID schon vergeben
> wurde (Bei
> mir kam das aber bisher trotz Multiprozessorumgbung noch nicht vor).

Ein Unique-Index oder Constraint auf den Datenbankfeld ist da wirklich das
beste und das einfachste was man machen kann.
Aber dein md5(md5(rand())) ist nicht besser als md5(rand()), liefert nur
etwas anderes.
MD5 ist eindeutig d.h. das einem Eingabewert genau ein Ausgabewert
zugeordnet ist. Durch dieses doppelte hashen steigt dagegen eher die
Wahrscheinlichkeit das es doppelte Werte gibt da die Eingangsdaten fur den
2. MD5 keine 128 Bit sondern jetzt 256 Bit sind und somit sich die
Wahrscheinlichkeit das unterschiedliche Werte den gleichen Hash-Key bekomme
wieder steigt. Alles was sich im Eingangsbreich <=128 Bit befindet hat aber
(kommt auf das verfahren an) die theoretische Chance eineindeutig zu sein.
Mit ist aber nicht bekannt das das fur MD5 nachgewiesen ist bis auf Zahlen
bis 32 Bit (d.h. damit das die ersten 32 Bit als Quelle eines MD5 einen
eineindeutigen Hash liefern).

Fur weitergehendes verweise ich an entsprechende Literatur zu dem Thema.

Gru?,
Andreas


php::bar PHP Wiki   -   Listenarchive