ChrisB: Zufällige Passwörter generieren mit md5?

Beitrag lesen

Hi,

in eine Tabelle mit einigen tausend Adressen möchte ich jeder Adresse einen eindeutigen Zugriffscode zuordnen.

Der wo zur Anwendung kommen soll?
Soll ihn sich bspw. ein Benuzter *dauerhaft* merken können müssen - oder wird er einmalig als Link-Parameter verwendet o.ä.?

Das Datenfeld ist UNIQUE und soll eine Zufallskombination von 8 Zahlen und Buchstaben erhalten, die man nicht "erraten" kann.

Ich könnte Zufallszahlen generieren, die mit md5 umwandeln. Aber dann habe ich 16 Zeichen. Ist es sinnvoll, daraus 8 zu entnehmen?

Nein, eigentlich nicht.
Die "Eindeutigkeit" kann eine solche Hashfunktion nur über die komplette Ergebnislänge garantieren.
Wenn du daraus Teile entnimmst, steigt die Wahrscheinlichkeit für Kollisionen stark an.

Und selber basteln, auf Basis von Ausgangswerten wie aktueller Zeit in Millisekunden etc., sollte man sowas schon mal gar nicht - da kann man sehr schnell etwas zusammenstöpseln, was sehr leicht angreifbar ist.

PHP bietet dir bspw. uniqid() (minimale Länge 13 Characters), und MySQL UUID() - und ab Version 5.1.20 auch UUID_SHORT(), was im Gegensatz zu den 128 des vorgenannten einen "nur" 64 Bit langen Wert liefert.

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.