md5() Hash

kesnw

Erfahrenes Mitglied
Hi,

wenn ich die Zahlen 1 bis 100000 mit md5() als Hash in eine Datenbank speichere, sind die Werte dann eindeutig oder kann es möglich sein dass zwei Werte gleich sind Ich frage deshalb, weil dieser Hash-Wert mein Schlüssel ist...
 
Nein kann nicht passieren das sie gleich sind, die wahrscheinlichkeit ist sehrsehrsehrsehrsehrsehrsehrsehr...sehrsehrsehrsehrsehrsehr gering :)
 
Man beachte, dass ein wert mit md5 immer das selbe "resultat" liefert.
Somit DARF es NICHT zweimal den selben Wert generieren.
md5 ist keine Verschlüsselung, sondern nur eine "Umwandlung"...
 
Hallo,

es wird zwar den Thread ersteller nicht mehr interessieren, aber für andere die hierauf stoßen sei gesagt, dass es durchaus möglich ist dass der Hash 2 mal gleich ist, denn eine Hashfunktion kann nie völlig Kollisionsfrei sein da sie nicht injektiv ist! Es ist jedoch so, das die Wahrscheinlichkeit einer Kollision für einen 128Bit Hashwert 3,4028236692093846346337460743177e+38 beträgt.

Viele Grüße
 
Wenn du dir absolut sicher sein willst, nimm SHA512.
Dabei kann man dir fast garantieren, dass es zu keiner Kollision kommt ;)
 
Man beachte, dass ein wert mit md5 immer das selbe "resultat" liefert.
Somit DARF es NICHT zweimal den selben Wert generieren.
Bei einem Hash wird aber ein unendlicher Addressraum (alle moeglichen Kombinationen von Zeichen in beliebiger Laenge) auf einen beschraenkten Addressraum (Hexadezimal mit fixer Laenge) abgebildet. Entsprechend muss es bei einem Hash (egal wie lang er denn ist, also auch bei SHA512) irgendwann mal zu einer Kollision kommen.

Hi,

wenn ich die Zahlen 1 bis 100000 mit md5() als Hash in eine Datenbank speichere, sind die Werte dann eindeutig oder kann es möglich sein dass zwei Werte gleich sind Ich frage deshalb, weil dieser Hash-Wert mein Schlüssel ist...
Bei der sehr kleinen Teilmenge die Du hier anpeilst ist die Wahrscheinlichkeit dass es zu einer Kollision kommt sehr gering. Im Grunde muesste man hier wohl sagen dass, kaeme es in diesem Bereich zu einer Kollision, der Hash-Algorithmus in die Tonne gehoert.
MD5 ist zwar sicher nicht der beste Algorithmus, und sicher auch nicht mehr unbedingt die Empfehlung des Kuechenchefs, aber in die Tonne kippen muss man ihm auch nicht.
 
Bei einem Hash wird aber ein unendlicher Addressraum (alle moeglichen Kombinationen von Zeichen in beliebiger Laenge) auf einen beschraenkten Addressraum (Hexadezimal mit fixer Laenge) abgebildet.
Da ein Rechner nur rechnen kann (daher auch der Name), sind Hash-Werte eigentlich auch nur Zahlen, die jedoch in unterschiedlicher Form (beispielsweise als Hexadezimalzahl oder Bytesequenz) dargestellt werden können. So wäre es etwa platzsparender, den Hash-Wert durch Bytes als durch Hexadezimalzeichen darzustellen, um so 8 statt nur 4 Bit pro Zeichen zu verwenden. (Siehe zweiter Parameter der md5()-Funktion)
 
Zurück