SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Thema geschlossen
 
Themen-Optionen Ansicht
  #1  
Alt 20.04.2008, 20:48:46
Jola Jola ist offline
Anfänger
 
Registriert seit: Apr 2008
Beiträge: 3
md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Hallo zusammen,

Ich war vor kurzem auf der Suche, nach einer Möglichkeit absolut eindeutige IDs (UUID / GUID) zu erzeugen.
Dabei bin ich unter "Eindeutige IDs erzeugen" auf die Funktion md5(uniqid(rand(), TRUE)); gestoßen. Mir wurde aber geraten die Funktion ohne md5(); zu verwenden (also uniqid(rand(), true);), weil md5(); wohl nicht ganz eindeutig ist, also unter umständen bei 2 unterschiedlichen Werten das gleiche Ergebnis liefert.

könnt ihr mir was dazu sagen? stimmt das? sollte ich md5(); eher weglassen, oder ist das quatsch? oder ist es egal? gibts ne andere möglichkeit GUIDs zu erzeugen?

mfg Jola

Geändert von Jola (20.04.2008 um 20:50:07 Uhr)
  #2  
Alt 20.04.2008, 20:55:02
lukgestach lukgestach ist offline
Junior Member
 
Registriert seit: Feb 2007
Ort: Safnern, CH
Alter: 32
Beiträge: 255
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

ich glaube kaum dass md5 ein gleiches ergebnis bei zwei unterschiedlichen werten liefert! bin mir aber nicht 100% sicher.

Gruss Lukas
  #3  
Alt 20.04.2008, 21:08:25
Jola Jola ist offline
Anfänger
 
Registriert seit: Apr 2008
Beiträge: 3
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Hätte ich jetzt auch nicht gedacht nur die person die mir das gesagt hat hat Informatik studiert und hat von daher mehr ahnung als ich, deswegen werd ich das erstmal glauben, bis mir wer anderes das gegenteil plausibel erklärt. es geht jetzt auch nicht ub überschneidungen die häufig auftreten. aber UUIDs haben nunmal den anspruch Global eindeutig/einmalig zusein. und da ist es auch schon bei einer sehr kleinen wahrscheinlichkeit scheiße, wenn md5() nun uneindeutig ist.
mfg Jola
  #4  
Alt 20.04.2008, 21:16:20
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Zitat:
Zitat von lukgestach Beitrag anzeigen
ich glaube kaum dass md5 ein gleiches ergebnis bei zwei unterschiedlichen werten liefert! bin mir aber nicht 100% sicher.

Gruss Lukas
die anzahl der ergebnisse von md5 ist endlich, die anzahl der werte unendlich. ergo: für jedes md5-ergebnis gibt es unendlich viele werte die dieses ergebnis erzeugen.

Geändert von feuervogel (20.04.2008 um 21:16:43 Uhr)
  #5  
Alt 21.04.2008, 10:38:04
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Grundsätzlich stellt sich doch die Frage wie hoch die Wahrscheinlichkeit ist. Auch GUID's könnten theoretisch zweimal vorkommen wenn auch eher unwahrscheinlich. Die mit md5, uniqid und rand erstellte ID ist ebenfalls "eindeutig", da hier ja aus willkürlichen Fragmenten das Ergebnis erzeugt wird. Die Wahrscheinlichkeit das zwei gleiche Zahlen erzeugt werden ist gegeben aber dennoch zu vernachlässigen.

Genauso kann man sich die Frage stellen wie hoch die Wahrscheinlichkeit ist vom Blitz getroffen zu werden und gleichzeitig den Jackpot im Lotto zu gewinnen. Auch hier besteht eine Wahrscheinlichkeit.

Also fragt man sich doch was diese "GUID's" bezwecken sollen und wofür sie gebraucht werden.

Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
  #6  
Alt 28.04.2008, 11:30:00
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

uniqid() - uniq(ue) id, eindeutiges Merkmal.
Warum versuchst Du etwas eindeutiges noch eindeutiger zu machen?
Anders gefragt: Welche begründeten Zweifel hast Du an uniqid()?
md5 kann kein Mehr an Eindeutigkeit erzeugen. Wenn uniqid() zwei Mal den selben Wert erzeugt, gibt auch das anschließende md5() zwei Mal den selben Wert aus. md5() bringt an dieser Stelle absolut nichts.
__________________
Wat der Bauer nich kennt, dit frisster nich.
  #7  
Alt 29.04.2008, 16:50:07
Jola Jola ist offline
Anfänger
 
Registriert seit: Apr 2008
Beiträge: 3
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Nun die md5() funktion darum zutun war nicht meine Idee. Das steht so in selfphp http://www.selfphp.de/kochbuch/kochbuch.php?code=59
Das md5() bei gleichen Eingangswerten das gleiche Ergebnis liefert ist mir klar. Mein Problem ist eher, dass md5() mir unter unständen aus 2 unterschiedlichen ergenbnissen von uniqid() den gleichen hash generiert. Somit würde die Eindeutigkeit von uniqid() verloren gehen, und man sollte md5() weglassen.
Wenn das so Stimmt wäre es auch gut, das in Selfphp zu ändern, oder dass man wenigstens eine kleine Anmerkung einfügt die einen darauf hinweist, das man für GUIDs die md5() funktion weglassen sollte.

Mich würde aber trotzdem mal interessieren, warum an dieser Stelle md5() verwendet wird. Ist das einfach ein Fehler, oder ist es in diesem Fall besser mit md5() zu arbeiten, wein die ID im Beispiel ja als Dateiname verwendet werden soll?
  #8  
Alt 29.04.2008, 18:00:20
Damir Damir ist offline
Administrator
 
Registriert seit: Jan 2002
Ort: Köln
Alter: 53
Beiträge: 1.276
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Hi,

in diesem Fall ist das auch so gewollt. GUID'S haben 128 Bit (32 Zeichen) , hingegen Werte die mit uniqid () erstellt worden sind nur 13 bzw. 23 Zeichen. Mit md5() erreicht man zusätzlich eine 128 Bit- Darstellung mit 32 Zeichen. Die Wahrscheinlichkeit ist verschwindend gering, das du gleiche Werte erzeugst (uniqid() mit md5()).

Damir
__________________
Qozido - Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.

www.qozido.de
  #9  
Alt 30.04.2008, 10:12:33
defabricator defabricator ist offline
Senior Member
 
Registriert seit: Sep 2007
Ort: Potsdam
Alter: 55
Beiträge: 1.020
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Ich möchte aber nochmals betonen, dass md5() in diesem Fall nichts, absolut nichts zur Eindeutigkeit der Zeichenkette beiträgt. Das Ergebnis von uniqid() ist mindestens so eindeutig wie das Ergebnis von md5(unqid()). Der einzige Effekt ist: "Es dann halt irgendwie 32 Zeichen".
__________________
Wat der Bauer nich kennt, dit frisster nich.
  #10  
Alt 24.02.2010, 00:04:12
Bubbles Bubbles ist offline
Anfänger
 
Registriert seit: Feb 2010
Alter: 36
Beiträge: 1
AW: md5(uniqid(rand(), TRUE)) - Absolut eindeutig?

Die Wahrscheinlichkeit das du den selben md5 rausbekommst ist wirklich sehr gering.
Was dein Fachinformatikerfreund vermutliche meinte sind die Kollisionen, allerdings geht es dabei weniger um die befürchtung das der selbe md5 hash bei unterschiedlich genutzten texten/strings herrauskommt, sondern viel mehr das md5 signierte Dokumente und Zertifikate nicht mehr fälschungssicher sind, weil man mit viel rechenpower eine kollision (text/string) berechnen kann was den selben hash zurück liefert.

Das letzte was ich darüber gelesen habe, war das man für die berechnung einer Kollision über 200 Ps3's genutzt hatte.

Also für deine Fälle ist das noch ok, aber bei Signieren von dokumenten oder erzeugen von Hashes zu Passwörtern, dann doch lieber den SHA-1 Hash verweden.
Thema geschlossen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Absolut Beginner kenan PHP Grundlagen 8 05.05.2006 03:32:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:52:42 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt