Hallo,
ich wollte mal nachfragen ob MD5/SHA1 wirklich unique sind ?
Weil dann hätte ich die Idee, dass ich statt autoincrement bei SQL lieber einen gehashten Timestamp abspeichere. Wäre die Idee gut oder eher zu verwerfen ?
Lg
Hallo,
ich wollte mal nachfragen ob MD5/SHA1 wirklich unique sind ?
Weil dann hätte ich die Idee, dass ich statt autoincrement bei SQL lieber einen gehashten Timestamp abspeichere. Wäre die Idee gut oder eher zu verwerfen ?
Lg
Die Antwort kann man sich durch kurzes Nachdenken selber herleiten: Eingabe von md5/sha1: ein beliebig langer String. Ausgabe von md5/sha1: ein Integer fester Größe (z.B. 128 Bit bei md5). D.h. es gibt unendlich viele mögliche Eingaben und endlich viele mögliche Ausgaben, damit können die ja wohl kaum eineindeutig sein. Da die darauf ausgelegt sind, chaotisch zu sein, kannst du auch nicht davon ausgehen, dass in einem gewissen Bereich Eineindeutigkeit vorliegt. Außerdem bringt deine Idee nichts, Integers sind als Schlüssel logischerweise schneller, wenn sie keine 128 Bit oder mehr haben, und außerdem kann man leicht den Timestamp herausbekommen, wenn man ungefähr weiß, wo er liegt.
Mit dem Post vom User ist die Frage wohl beantwortet.
Wenn du aber trotzdem möchtest, dass ein Schlüssel dem Betrachter keine Informationen liefert, nimm doch dafür uniqid(). Oder schreib dir selbst einen kleinen codierer der mit dem timestmap & microsekunden arbeitet.
Unwahrscheinlich ist eine Kollision natürlich…