Selbst POLYfill obwohl die Top-Antwort praktisch korrekt ist, dann ist es theoretisch nicht korrekt.
Ihre Frage hat auch keine perfekte Antwort.
Sicherheit beruht auf unvoreingenommener, unvorhersehbarer, echter Zufälligkeit. Aber etwas, das wirklich zufällig ist, kann immer wiederholen, oder es wäre nicht zufällig. Ein millionenseitiger Würfel könnte millionenfach hintereinander auf der gleichen Zahl landen, die Wahrscheinlichkeit dafür ist nur sehr gering. Die Stärke von UUIDv4 ist, dass die Wahrscheinlichkeit, zweimal die gleiche ID zu bekommen (Kollision), astronomisch klein ist, das "selbe Atom aus einer Galaxie zweimal auswählen".
Jeder Versuch, die Eindeutigkeit hinzuzufügen, wird die Sicherheit verringern. Sie können einen Mikrosekundenzeitstempel oder einen automatisch inkrementierenden Wert und eine millimetergenaue räumliche Koordinate hinzufügen, um die Eindeutigkeit zu gewährleisten. Aber dann fügen Sie Informationen darüber hinzu, wo und wie und in welcher Reihenfolge die ID erstellt wurde ...
Auch in diesem Fall ist es sicher, UUIDv4 als sichere und eindeutige Kennung zu verwenden. realisieren
auch, dass md5
, sha1
, uniqid
usw. selbst nicht perfekt sind, und sie in zufälliger Weise kombiniert verringert nicht notwendigerweise Kollision oder die Sicherheit erhöhen. Hashing-Funktionen sind bestenfalls so einzigartig wie das, was Sie hashen, und normalerweise verringern sie die Eindeutigkeit.
Die Antwort liegt immer in Zufälligkeit plus Länge.
Was würde das erreichen? – Cybergibbons
MD5 ist kein sicherer Hash-Algorithmus. – starbeamrainbowlabs