DevBox Γρήγορα εργαλεία για προγραμματιστές, χωρίς εγγραφή

Εργαλείο Δημιουργίας UUID

Όρισε μια ποσότητα και δημιούργησε — κάθε UUID δημιουργείται φρέσκο στον browser σου χρησιμοποιώντας μια κρυπτογραφικά ασφαλή τυχαία πηγή, χωρίς τίποτα να ανεβαίνει πουθενά.

Ένα εγγενές API του browser, τίποτα χειροποίητο

Αυτή η γεννήτρια καλεί απευθείας το crypto.randomUUID() — μια ενσωματωμένη μέθοδο του browser που επιστρέφει ένα συμβατό με την προδιαγραφή UUID έκδοσης 4 σε μία μόνο κλήση, υποστηριζόμενη από την ίδια κρυπτογραφικά ασφαλή γεννήτρια τυχαίων αριθμών που χρησιμοποιείται για κλειδιά και tokens. Δεν υπάρχει καμία βιβλιοθήκη προς φόρτωση ούτε bit προς χειροκίνητο χειρισμό: υποστηρίζεται εγγενώς σε όλες τις τρέχουσες εκδόσεις κάθε βασικού browser που στοχεύει αυτός ο ιστότοπος. Η επιλογή κεφαλαίων εφαρμόζεται στο αποτέλεσμα εκ των υστέρων, ως απλή μετατροπή κειμένου — δεν αλλάζει τον τρόπο με τον οποίο δημιουργήθηκε το UUID.

Πρακτικό παράδειγμα

Η δημιουργία ενός UUID θα μπορούσε να παράγει το 502fb771-2b2b-4f9f-bb91-ffc7ee8269f2. Παρατήρησε το 4 στην αρχή της τρίτης ομάδας — είναι το σταθερό ψηφίο έκδοσης που το δηλώνει ως v4 — και το b στην αρχή της τέταρτης ομάδας, που είναι πάντα ένα από τα 8, 9, a, b, τα σταθερά bit της μεταβλητής RFC 4122. Όλα τα υπόλοιπα από αυτά τα 32 δεκαεξαδικά ψηφία είναι τυχαία. Επιλέγοντας "Κεφαλαία" γίνεται 502FB771-2B2B-4F9F-BB91-FFC7EE8269F2 — το ίδιο UUID, η ίδια τιμή, απλώς με διαφορετικό συνδυασμό κεφαλαίων-πεζών.

Συχνές ερωτήσεις

Πόσο τυχαίο είναι πραγματικά ένα UUID v4;

Τα UUID έκδοσης 4 παράγονται αποκλειστικά από τυχαιότητα — αυτό το εργαλείο χρησιμοποιεί το crypto.randomUUID(), την ενσωματωμένη στον browser κρυπτογραφικά ασφαλή γεννήτρια τυχαίων αριθμών (όχι το Math.random(), που δεν είναι ασφαλές για αυτόν τον σκοπό). Από τα 128 bit συνολικά, τα 122 είναι τυχαία· τα υπόλοιπα 6 είναι σταθερά για να δηλώσουν το UUID ως έκδοση 4 (το 4 στην αρχή της τρίτης ομάδας) και να ορίσουν τη μεταβλητή RFC 4122 (ο πρώτος χαρακτήρας της τέταρτης ομάδας είναι πάντα 8, 9, a ή b). Αυτό διαφέρει από τα UUID έκδοσης 1, που κωδικοποιούν την τρέχουσα χρονοσφραγίδα και έναν αναγνωριστικό κόμβου — τα v1 ID αποκαλύπτουν περίπου πότε δημιουργήθηκαν, τα v4 ID δεν αποκαλύπτουν τίποτα πέρα από τον εαυτό τους.

Ποια είναι η πιθανότητα να συγκρουστούν δύο UUID που παράγονται;

Αστρονομικά μικρή. Με 122 τυχαία bit, ο χώρος πιθανών UUID v4 είναι 2^122 — περίπου 5,3 undecillion τιμές. Ακόμα και παράγοντας ένα δισεκατομμύριο UUID το δευτερόλεπτο, θα χρειάζονταν περίπου 85 χρόνια για να φτάσει η πιθανότητα μίας και μόνο σύγκρουσης οπουδήποτε στο 50%. Στην πράξη, αντιμετώπισε τα UUID v4 ως μοναδικά για κάθε πραγματικό φόρτο εργασίας — ο κίνδυνος ενός σφάλματος αλλού στο σύστημά σου είναι κατά πολύ μεγαλύτερος από τον κίνδυνο μιας τυχαίας σύγκρουσης.

Γιατί ένα UUID έχει μήκος 36 χαρακτήρων;

Ένα UUID είναι 128 bit, γραμμένα ως 32 δεκαεξαδικά ψηφία ομαδοποιημένα σε 8-4-4-4-12 και ενωμένα με τέσσερις παύλες: 32 ψηφία + 4 παύλες = 36 χαρακτήρες. Η ομαδοποίηση είναι καθαρά σύμβαση ευαναγνωσίας από την αρχική προδιαγραφή — οι παύλες δεν μεταφέρουν καμία πληροφορία — γι' αυτό ορισμένα συστήματα τις αφαιρούν για μια συμπαγή μορφή 32 χαρακτήρων.

Τα UUID πρέπει να είναι κεφαλαία ή πεζά;

Το RFC 4122 ορίζει τα πεζά δεκαεξαδικά ψηφία ως την κανονική μορφή, και αυτό παράγει το εργαλείο από προεπιλογή. Τα κεφαλαία UUID είναι λειτουργικά πανομοιότυπα — ορισμένες βάσεις κώδικα και παλαιά συστήματα (ιδίως κάποιες συμβάσεις GUID της Microsoft) προτιμούν τα κεφαλαία εξ έθους — γι' αυτό προσφέρεται εδώ ένας διακόπτης κεφαλαίων, αλλά τα πεζά παραμένουν η ασφαλέστερη προεπιλογή αν δεν έχεις συγκεκριμένο λόγο να τα αλλάξεις.