Mailinglisten-Archive |
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