Zufallsstring mit md5
hotti
- php
hi,
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist? Z.Z. hab ich time() und pid, aber das reicht noch nicht ganz. Gibts evntl. eine fertige Funktion die das besser kann?
Hotti
Hi!
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist?
Theoretisch keine Hash-Funktion, also weder MD5 noch SHA-1 und dergleichen, denn die erzeugen keine generell eindeutigen Werte. Rein praktisch kommt es an, ob du mit dem geringen Risko einer Kollision leben kannst. Für eindeutige Werte gäbe es aber GUID, doch hat PHP keine Funktion dafür, nur uniqid() sowie die dortigen Kommentare.
Lo!
hi,
[..] nur uniqid() sowie die dortigen Kommentare.
Danke Dir!!!
Sieht gut aus, auf jeden Fall besser als mein t.pid-Gewurschde auf ner WindowsZicke ;-)
Grüße an Alle;
Horst Hammelbein
Hallo Rolf,
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist?
Theoretisch keine Hash-Funktion, also weder MD5 noch SHA-1 und dergleichen, denn die erzeugen keine generell eindeutigen Werte.
genau, denn der Wertebereich ist begrenzt.
Der Ansatz mit Zeit und PID ist schon der richtige, um relativ einmalige Werte zu erzeugen:
$r=substr([link:http://de2.php.net/manual/de/function.microtime.php@title=micortime](),2).'.'.[link:http://de2.php.net/manual/de/function.getmypid.php@title=getmypid]().'.'.[link:http://de2.php.net/manual/de/function.rand.php@title=rand]();
micortime() und PID reicht im Idealfall aus. Jedoch kann PHP in einer Threadanwendung (Webserver-Modul, FastCGI-Server) vorliegen und die Systemzeit kann geändert werden.
Gruß aus Berlin!
eddi
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist? Z.Z. hab ich time() und pid, aber das reicht noch nicht ganz. Gibts evntl. eine fertige Funktion die das besser kann?
sub rand {
return 4; # determined once by dice
# guaranteed to be random
}
mfg Beat
Hi,
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist?
Ein Wunder.
Oder eine Neudefinition von md5.
Da md5 aus einer unendlichen Menge von Strings eine endliche Menge (auch wenn die Menge mit ~ 3.4e38 sehr groß ist) von Hashes erzeugt, kann md5 nicht eindeutig sein.
cu,
Andreas
Hi,
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist?
Ein Wunder.
Oder eine Neudefinition von md5.
Quatsch. Damit pack ich nur den Käse ein ;-)
Grüße an Alle!
Danke an Alle!
Horst Schlemmerschnitte
was brauch ich denn alles, damit md5() einen Zufallsstring erzeugt, der auch eindeutig ist?
Mal anders gesehen, md5 verwurschtelt nur Daten, es erzeugt aber keine neuen.
Wenn du nicht eindeutige Daten in md5 steckst, kriegt man auch nichts eindeutiges raus.
Wenn time() und pid nicht eindeutig sind, muss halt noch was andres her. Vielleicht wärs gut wenn der Fragesteller sagt was er vor hat. Eine Zufallszahl kann man auch über die IP oder Port oder was auch immer erzeugen. Wobei die Zeit ja schon ne gute Idee ist. Warum ist die denn nicht eindeutig?
Wobei die Zeit ja schon ne gute Idee ist. Warum ist die denn nicht eindeutig?
Auf meinem Win XP bekomme ich selbst mit Time::HiRes nicht mehr als 1/64tel Sekunde. Du kannst eine Uhr manipulieren. Dadurch durchläufst du mehrfach die gleiche Zeit.
Du brauchst also einen zusätzlichen wechselnden Parameter.
mfg Beat
moin,
nach dem Überschlafen der Sachlage hab ich mich dann nun doch entschieden, den String mit Perl zu erzeugen.
Vielen Dank nochmal und auch Danke Eurer Hinweise für die vielen Neulinge hier was md5 betrifft.
Schönen Sonntag,
Horst Sonnenschein
Tach,
moin,
nach dem Überschlafen der Sachlage hab ich mich dann nun doch entschieden, den String mit Perl zu erzeugen.
Vielen Dank nochmal und auch Danke Eurer Hinweise für die vielen Neulinge hier was md5 betrifft.
für die Neulinge im Umgang mit MD5 sollte man dann gleich noch ergänzend darauf hinweisen, dass es heutzutage keine gute Wahl mehr ist und bessere Alternativen existieren.
mfg
Woodfighter