Wie sicher ist es, entfernen Sie das "-" in einer zufällig generierten UUID?
Habe ich diesen code:
String uuid = UUID.randomUUID().toString().replace("-", "");
Wie sicher ist es, entfernen Sie das "-" in die generierte UUID? Würde es zu entfernen Niederlage der Zweck der es weltweit einzigartig und machen die generierte UUID anfällig für Kollisionen?
- Die UUID ist eine 128-bit-Zahl. Die Bindestriche sind nur ein Teil des display-format für den menschlichen Verzehr, Sie sind nicht Teil der UUID selbst.
- Es ist sicher, da die
-
ist immer in den gleichen Positionen. Siehe UUID-Format auf Wikipedia. - stackoverflow.com/questions/1155008/how-unique-is-uuid
- WARUM wollen Sie entfernen die Bindestriche? Das scheint wie eine ziemlich seltsame Anfrage.
- Auch ich downvoted, da diese Frage fehlt grundlegende Forschung. Ein kurzer Blick auf die Generierung, ein paar hätte sich rasch gezeigt, Sie sind immer an der gleichen Stelle, und ein Blick in was UUIDs sind und wie Sie formatiert hätte ergeben, dass dies ebenso schnell. Bitte mehr tun, forschen auf eigene Faust und klären Ihr Verständnis der Technologien, mit dem Sie arbeiten, vor dem posten einer Frage.
- Ich habe entfernt die Bindestriche aus der Uuid vor, weil Sie mir wesentlich besser in eine URL ohne.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es 100% sicher ist, da die Bindestriche sind nicht Teil des Wertes. Der String UUID ist eine hex-Darstellung einer 128-bit-Wert. Die Striche sind da, nur für display-Zwecke, so UUIDs wird ein wenig leichter auf die Augen.
Nur vorsichtig sein, beim passieren der UUIDs in
String
form an externe Systeme wie z.B. externe APIs, Datenbanken, und Dinge dieser Natur. Sie könnten erwarten, dass die Bindestriche da zu sein.Sagen wir, ich will das Weiße Haus anrufen. Ihre Telefon-Nummer (202) 456-1111. Wenn ich löschen Sie alle Bindestriche und Klammern aus, dass sich Telefon-Nummer, ich bin Links mit 2024561111. Ich habe nicht verlieren keine Informationen in den Kurs, dies zu tun - ich habe gerade die Formatierung in einer Weise, die macht es schwieriger zu Lesen. Wenn ich punch diese Nummer in meinem Telefon, es werde noch den Aufruf richtig, weil das Telefon-system noch weiß, dass die ersten drei Ziffern der Vorwahl und die nächsten sieben sind die wichtigsten Nummer.
In der gleichen Weise, die Striche in eine UUID wie die zusätzliche Satzzeichen in einen Telefonnummer - Sie sind enthalten, so dass es einfacher für einen Menschen zu Lesen, die zugrunde liegende große Anzahl. In UUIDs, diese Zahl ist 128 bit lang und wird in hexadezimaler Schreibweise geschrieben, so dass im Gegensatz zu einer Telefonnummer, die es weniger "offensichtlich" eine Zahl, aber das Grundprinzip ist das gleiche. Löschen der Striche ändert nichts an der Zahl und somit nicht die Sicherheit beeinträchtigen.
Nun, was könnte passieren, dass dies, so bricht die Formatierung Kompatibilität auf allen Plattformen. Gehen wir zurück zu der Telefonnummer, die Analogie. Einige websites, die ich verwendet habe, nicht lassen Sie mich geben in 2024561111 wie eine Telefonnummer. Sie werden darauf bestehen, dass ich in Leerzeichen, Bindestriche und Klammern, wie in (202) 456-1111. (Ich bin kein fan von Websites wie, dass, aber das ist eine andere Geschichte.) So entfernen Sie die Bindestriche von Ihrer UUID könnte möglicherweise ein Problem, wenn Sie brauchen, um passieren eine string-Darstellung der UUID in einen anderen Prozess oder die Dienstleistung, das erwarten die vollständige Formatierung, einschließlich des Kommas.
Striche in eine ordnungsgemäß gebildet UUID sind nicht zufällig in der Zeichenfolge platziert - es ist ein bestimmtes format detailliert in den RFCs - http://www.ietf.org/rfc/rfc4122.txt
So, das entfernen der Striche wirken sich nicht auf die Einzigartigkeit der UUID.
Allerdings kann es Probleme mit Bibliotheken, die erwarten, dass die Bindestriche als Teil einer UUID zu überprüfen, wie eine UUID.
Warum willst du Sie entfernen?
Können Sie überprüfen, wie der string erstellt wird, indem das Lesen in der javadoc:
Also das entfernen der
-
ist in Ordnung, Sie können setzen Sie in der richtigen position später, wenn Sie wollen, oder erstellen SieUUID
- Objekt mit den gleichen Informationen.Bezug auf die Einzigartigkeit: Wie einzigartig ist die UUID?
Die UUID ist eine 128-bit-Zahl.
Format in hexadezimaler mit Bindestrichen ist nur eine Anzeige für den menschlichen Verzehr. Es ist eines von mehreren möglichen display-renderings, und das display-format, mit oder ohne Bindestriche, ist NICHT die UUID selbst.
Die UUID ist eine 128-bit-Zahl. Die vier bits der Ziffer
M
angeben der UUID-version, und die ein bis drei höchstwertigen bits der ZifferN
zeigen die UUID Variante. Die binäre Codierung von UUIDs variiert zwischen den Systemen. Viele Systeme Kodieren die UUID komplett in einem big-endian-format.