Γεννήτρια UUID

Δημιουργήστε UUID στον browser σας: πλήρως τυχαία v4, ταξινομημένα v7 για κλειδιά βάσεων δεδομένων, ή ντετερμινιστικά v5. Έως 1000 ταυτόχρονα, και τίποτα δεν φεύγει από τη συσκευή σας.

Πατήστε Δημιουργία για κλήρωση
Έκδοση
Σύνθετες επιλογές

Χρειάζεστε ένα αναγνωριστικό που δεν πρόκειται να συγκρουστεί με κάποιο που έφτιαξε κάποιος άλλος, σε ένα μηχάνημα που δεν έχετε ακούσει ποτέ, χωρίς να ζητήσετε άδεια από κανέναν; Αυτή ακριβώς είναι η δουλειά ενός UUID. Είναι ένας αριθμός 128-bit, γραμμένος ως 36 χαρακτήρες στο γνώριμο μοτίβο 8-4-4-4-12, και ολόκληρος ο σχεδιασμός του βασίζεται στο ότι δύο από αυτά δεν πρόκειται να είναι ίδια, παρόλο που τίποτα δεν συντονίζει ποιος παίρνει ποιο. Αυτή η δωρεάν γεννήτρια τα δημιουργεί στον browser σας: επιλέξτε μια έκδοση στο πεδίο Έκδοση, δηλώστε πόσα χρειάζεστε στο πεδίο Πλήθος, και πατήστε Δημιουργία. Η σελίδα ανοίγει με ένα μονό v4, την έκδοση που ζητούν τα περισσότερα έργα, ώστε το πρώτο αναγνωριστικό να απέχει μόνο ένα κλικ.

Κάθε αναγνωριστικό δημιουργείται από τον browser σας μέσω του Web Crypto API. Η έκδοση 4 χρησιμοποιεί την crypto.randomUUID() όπου την παρέχει ο browser, και διαφορετικά την crypto.getRandomValues() — μια κρυπτογραφικά ισχυρή πηγή τυχαιότητας αντί για μια ψευδοτυχαία συνάρτηση JavaScript όπως η Math.random(). Η έκδοση 7 τοποθετεί μια χρονοσφραγίδα 48-bit σε χιλιοστά του δευτερολέπτου στην αρχή, στη συνέχεια έναν μετρητή 12-bit που αυξάνεται μέσα στο ίδιο χιλιοστό του δευτερολέπτου, και έπειτα 62 τυχαία bit, που είναι η μέθοδος ταξινόμησης που περιγράφεται στο RFC 9562· αυτός ο μετρητής είναι ο λόγος που μια παρτίδα χιλίων βγαίνει με τη σωστή σειρά αντί για ανακατεμένη. Η έκδοση 1 συνδυάζει μια χρονοσφραγίδα με ένα τυχαίο αναγνωριστικό κόμβου που έχει ενεργοποιημένο το bit multicast, οπότε δεν φέρει ποτέ τη διεύθυνση της κάρτας δικτύου σας με τον τρόπο που το έκαναν οι αρχικές υλοποιήσεις της δεκαετίας του 1990. Οι εκδόσεις 3 και 5 δεν είναι καθόλου τυχαίες: κατακερματίζουν (hash) έναν χώρο ονομάτων μαζί με ένα όνομα, χρησιμοποιώντας MD5 και SHA-1 αντίστοιχα, και αυτός ο κατακερματισμός συμβαίνει επίσης στη συσκευή σας. Τίποτα δεν αποστέλλεται σε διακομιστή, τίποτα δεν καταγράφεται, και μόλις φορτώσει η σελίδα συνεχίζει να λειτουργεί με τη σύνδεση κλειστή.

Το πεδίο Έκδοση είναι αυτό που αποφασίζει για όλα τα υπόλοιπα. Η έκδοση 4 έχει 122 τυχαία bit και καμία δομή — η προεπιλογή, και η σωστή απάντηση όταν ένα αναγνωριστικό πρέπει απλώς να είναι μοναδικό. Η έκδοση 7 διατηρεί 62 τυχαία bit αλλά ξεκινά με την ώρα που δημιουργήθηκε, ώστε ένα σύνολο από αυτά να ταξινομείται με τη σειρά που φτιάχτηκαν· αυτό την κάνει την έκδοση που πρέπει να επιλέξετε όταν το αναγνωριστικό πρόκειται να γίνει κλειδί σε βάση δεδομένων. Η έκδοση 1 είναι το αρχικό σχήμα που βασίζεται στον χρόνο, και διατηρείται εδώ για συστήματα που εξακολουθούν να τη ζητούν. Οι εκδόσεις 3 και 5 είναι το παράξενο ζευγάρι: είναι ντετερμινιστικές, που σημαίνει ότι οι ίδιες εισαγωγές παράγουν πάντα το ίδιο αναγνωριστικό, και παίρνουν δύο επιπλέον πεδία — τον Χώρο ονομάτων, που είναι ένας από τους τυπικούς χώρους DNS, URL, OID και X.500 ή ένας δικός σας Προσαρμοσμένος χώρος ονομάτων (UUID), και το Όνομα, τη συμβολοσειρά που προσδιορίζεται. Δώστε στο v5 τον χώρο ονομάτων URL και το https://example.com/a και θα πάρετε το ίδιο UUID σήμερα, αύριο και στο μηχάνημα κάποιου άλλου. Εξαιτίας αυτού, το Πλήθος εξαφανίζεται όταν επιλέγεται το v3 ή το v5: χίλια αντίγραφα μιας ντετερμινιστικής τιμής θα ήταν απλώς χίλια αντίγραφα μιας ντετερμινιστικής τιμής. Για κάθε άλλη έκδοση το Πλήθος κυμαίνεται από 1 έως 1000.

Τέσσερις διακόπτες αλλάζουν τη μορφή της εξόδου χωρίς να αλλάξουν τα 128 bit από κάτω. Τα Κεφαλαία τυπώνουν τα δεκαεξαδικά ψηφία ως κεφαλαιογράμματα, το Χωρίς παύλες δίνει τη συμπαγή μορφή 32 χαρακτήρων που προτιμούν ορισμένες στήλες και ονόματα αρχείων, και τα Άγκιστρα τυλίγουν την τιμή σε { } — τη μορφή που τα Windows και ο κόσμος του .NET ονομάζουν GUID. Στις Σύνθετες επιλογές, το urn:uuid: προσθέτει το πρόθεμα που το κάνει επίσημο URN· απενεργοποιεί τα Άγκιστρα και το Χωρίς παύλες όσο είναι ενεργοποιημένο, επειδή το πρότυπο επιτρέπει ακριβώς μία μορφή URN και αυτή είναι η κανονική με τις παύλες. Η Μορφή αντιγραφής αποφασίζει πώς ενώνεται μια παρτίδα όταν την παίρνετε: ένα ανά γραμμή, χωρισμένα με κόμμα, ή κάθε τιμή σε εισαγωγικά με ένα τελικό κόμμα, το οποίο επικολλάται απευθείας σε έναν πίνακα στον κώδικα. Κάτω από το αποτέλεσμα βρίσκεται μια γραμμή που αναφέρει την τυχαιότητα σε bit — 122 για το v4, 62 για το v7 — και, για το v7, τη χρονοσφραγίδα που κωδικοποιείται στο πρώτο αναγνωριστικό της παρτίδας, ώστε ο χρόνος μέσα στην τιμή να είναι ορατός αντί να υπονοείται. Το Αντιγραφή όλων και το Αποθήκευση σε αρχείο σέβονται και τα δύο τη Μορφή αντιγραφής. Το Ιστορικό διατηρεί τις τελευταίες 10 παρτίδες σας στον δικό σας browser: κάντε κλικ σε μία για να την επαναφέρετε, αντιγράψτε ή διαγράψτε μια μεμονωμένη καταχώρηση, ή καθαρίστε τα πάντα. Ο Καθαρισμός αδειάζει το αποτέλεσμα και αφήνει τις ρυθμίσεις σας ανέπαφες, και μετά τα 50 αναγνωριστικά η λίστα γίνεται ένα ενιαίο μπλοκ κύλισης αντί για πενήντα γραμμές.

Το πιο σημαντικό πράγμα σε αυτή τη σελίδα είναι η διαφορά μεταξύ του v4 και του v7 ως πρωτεύον κλειδί (primary key), και δεν είναι θέμα γούστου. Τα ευρετήρια των βάσεων δεδομένων είναι δέντρα (B-tree) που διατηρούνται σε ταξινομημένη σειρά, και το πού προσγειώνεται ένα νέο κλειδί σε αυτή τη σειρά αποφασίζει πόση δουλειά κοστίζει η εισαγωγή. Ένα κλειδί v4 είναι τυχαίο, επομένως διαδοχικές εισαγωγές προσγειώνονται σε άσχετες γωνίες του ευρετηρίου: σελίδες που ήταν γεμάτες διασπώνται (page split), τα μέρη του δέντρου που κρατά η βάση δεδομένων στη μνήμη είναι σπάνια τα μέρη που χρειάζεται η επόμενη εισαγωγή, και το ευρετήριο καταλήγει μεγαλύτερο και πιο κατακερματισμένο από όσο δικαιολογούν οι γραμμές στις οποίες δείχνει. Ένα κλειδί v7 ξεκινά με το τρέχον χιλιοστό του δευτερολέπτου, επομένως διαδοχικές εισαγωγές προσγειώνονται η μία δίπλα στην άλλη στη δεξιά άκρη του δέντρου, το οποίο είναι το μοτίβο που παράγει ένας ακέραιος αριθμός αυτόματης αύξησης και το μοτίβο γύρω από το οποίο χτίστηκαν οι δομές των ευρετηρίων. Αυτός είναι ολόκληρος ο συμβιβασμός: το v7 σας αγοράζει τη συμπεριφορά εισαγωγής ενός διαδοχικού κλειδιού, διατηρώντας παράλληλα την ιδιότητα που σας έκανε να επιλέξετε τα UUID εξ αρχής, η οποία είναι ότι ο καθένας μπορεί να κόψει ένα χωρίς να ρωτήσει έναν διακομιστή. Αυτό που κοστίζει είναι ότι ο χρόνος δημιουργίας είναι πλέον αναγνώσιμος μέσα στο αναγνωριστικό, και το αν αυτό έχει σημασία είναι ένα ερώτημα σχετικά με τα δεδομένα σας, όχι με τη μορφή.

Τίποτα δεν ελέγχει ποτέ ένα UUID για μοναδικότητα· το μέγεθός του είναι η εγγύηση. Δεν υπάρχει κανένα μητρώο, κανένα πήγαινε-έλα σε διακομιστή, καμία αναζήτηση — μια γεννήτρια παράγει έναν αριθμό και τον παραδίδει, και ο λόγος που δύο από αυτούς δεν συγκρούονται είναι απλώς ότι υπάρχουν 2^122 πιθανές τιμές v4, περίπου 5,3 ενδεκάκις εκατομμύρια. Το πρόβλημα των γενεθλίων (birthday problem) είναι ο ειλικρινής τρόπος να μετρηθεί αυτό: θα χρειαζόσασταν περίπου 2,7 πεντάκις εκατομμύρια αναγνωριστικά προτού υπάρξει 50% πιθανότητα να ταιριάξουν οποιαδήποτε δύο από αυτά, που αντιστοιχεί σε ένα δισεκατομμύριο νέα UUID κάθε δευτερόλεπτο για 86 χρόνια. Αξίζει να είμαστε ακριβείς σχετικά με το τι υπόσχεται και τι όχι αυτό. Πρόκειται για μια στατιστική εγγύηση, όχι μια αριθμητική, και ισχύει μόνο όσο η τυχαιότητα από κάτω είναι πραγματική — μια γεννήτρια που αρχικοποιήθηκε άσχημα, ή μια εικονική μηχανή που κλωνοποιήθηκε μαζί με τη δεξαμενή εντροπίας της, τη σπάει με τρόπο που η μορφή δεν μπορεί να εντοπίσει. Η έκδοση 7 περιορίζει το ερώτημα περαιτέρω: μέσα σε ένα μόνο χιλιοστό του δευτερολέπτου μια γεννήτρια δεν μπορεί να επαναλάβει τον εαυτό της καθόλου, επειδή ο μετρητής αυξάνεται αντί να ρίχνει ζάρια, και σε ανεξάρτητες γεννήτριες τα 62 τυχαία bit κάνουν τη δουλειά.

Ένα UUID είναι αναγνωριστικό, όχι κωδικός πρόσβασης. Η έκδοση 4 είναι απρόβλεπτη, και αυτό βάζει τους ανθρώπους στον πειρασμό να την αντιμετωπίζουν ως μυστικό — ως σύνδεσμο επαναφοράς κωδικού πρόσβασης, ως μη μαντεύσιμο URL, ως διακριτικό συνόδου (session token), ως κλειδί API. Η απρόβλεπτη φύση είναι πραγματική, αλλά η μυστικότητα είναι ιδιότητα του πώς χειρίζεται κανείς μια τιμή, και τα αναγνωριστικά αντιμετωπίζονται απρόσεκτα εκ σχεδιασμού: βρίσκονται σε URL, τα οποία καταλήγουν στο ιστορικό του browser, στα αρχεία καταγραφής διακομιστών, σε κεφαλίδες referrer και στα εργαλεία αναλυτικών στοιχείων, και επικολλούνται σε μηνύματα συνομιλίας. Οι άλλες εκδόσεις είναι ακόμη χειρότεροι υποψήφιοι. Η έκδοση 1 και η έκδοση 7 κωδικοποιούν και οι δύο τη στιγμή της δημιουργίας, οπότε οποιοσδήποτε έχει μία γνωρίζει χοντρικά πότε φτιάχτηκε και μπορεί να περιορίσει τη γειτονιά όλων των πραγμάτων που φτιάχτηκαν μαζί της. Οι εκδόσεις 3 και 5 είναι ντετερμινιστικές επί τούτου: ένα UUID v5 μιας διεύθυνσης email δεν είναι ένα κατακερματισμένο μυστικό, είναι μια τιμή που οποιοσδήποτε με την ίδια διεύθυνση μπορεί να υπολογίσει σε ένα δευτερόλεπτο. Χρησιμοποιήστε ένα UUID για να ονομάσετε ένα πράγμα. Χρησιμοποιήστε μια γεννήτρια κωδικών πρόσβασης, ή ένα διακριτικό από μια βιβλιοθήκη φτιαγμένη για μυστικά, όταν η τιμή πρέπει να παραμείνει άγνωστη.

Γιατί να επιλέξετε αυτή τη γεννήτρια UUID;

Τα UUID εμφανίζονται οπουδήποτε πρέπει να ονομαστεί κάτι προτού οτιδήποτε μπορέσει να επιβεβαιώσει ότι το όνομα είναι ελεύθερο. Ο κώδικας της εφαρμογής τα κόβει για γραμμές που πρόκειται να εισαγάγει, έτσι ώστε το αντικείμενο να έχει μια ταυτότητα προτού καν φτάσει στη βάση δεδομένων και ένας πελάτης να μπορεί να κάνει αναφορά σε αυτό ενώ η εγγραφή βρίσκεται ακόμα εν πτήσει. Τα κατανεμημένα συστήματα στηρίζονται πάνω τους πιο έντονα: πολλές υπηρεσίες που γράφουν σε έναν πίνακα, ένας offline πελάτης για κινητά που δημιουργεί εγγραφές σε ένα αεροπλάνο, μια ουρά που πρέπει να αναγνωρίσει το μήνυμα που έχει ήδη επεξεργαστεί — κανένα από αυτά δεν μπορεί να περιμένει τη σειρά του για έναν κοινόχρηστο μετρητή. Η έκδοση 5 καλύπτει μια διαφορετική ανάγκη, η οποία είναι ένα σταθερό αναγνωριστικό που προέρχεται από κάτι που έχετε ήδη: το ίδιο έγγραφο, το ίδιο URL ή ο ίδιος λογαριασμός αντιστοιχίζεται πάντα στο ίδιο UUID, επομένως μια εισαγωγή (import) μπορεί να εκτελεστεί δύο φορές χωρίς να διπλοεγγραφεί τίποτα. Αλλού, είναι απλώς η μορφή που απαιτεί ένα σύστημα — ένα ψηφιακό σύστημα εξυπηρέτησης του Δημοσίου, μια τράπεζα που ενοποιεί δεδομένα πελατών, ένας κόμβος τηλεπικοινωνιών, ή μια ερευνητική ομάδα που συγκεντρώνει μετρήσεις σε ένα bucket· όλα αυτά βασίζονται στη μοναδικότητα που προσφέρουν.

Αξίζει να γνωρίζετε μερικά ειλικρινή όρια. Μια παρτίδα είναι μια έκδοση: η τιμή στο πεδίο Έκδοση ισχύει για όλα όσα περιλαμβάνονται, οπότε μια εκτέλεση v4 και μια εκτέλεση v7 είναι δύο διαφορετικές παρτίδες. Αυτή είναι μια γεννήτρια, όχι ένας επιθεωρητής — η επικόλληση ενός UUID για να διαβαστεί η έκδοσή του ή η χρονοσφραγίδα του δεν είναι κάτι που κάνει αυτή η σελίδα. Το Αποθήκευση σε αρχείο γράφει ένα αρχείο απλού κειμένου (plain text) αντί για CSV ή JSON. Η έκδοση 7 αποκαλύπτει ανοιχτά πότε δημιουργήθηκε, με ακρίβεια χιλιοστού του δευτερολέπτου, το οποίο είναι ένας πραγματικός συμβιβασμός και όχι ελάττωμα, και η έκδοση 1 διαρρέει τον χρόνο με τον ίδιο τρόπο· αν αυτό είναι πρόβλημα για τα δεδομένα σας, η έκδοση 4 είναι η έκδοση που δεν λέει τίποτα σε κανέναν. Δύο ειδικές τιμές από το πρότυπο δεν είναι εκδόσεις και γι' αυτό δεν είναι επιλογές στο πεδίο Έκδοση, αλλά μπορείτε να τις αντιγράψετε από εδώ: το nil UUID, 00000000-0000-0000-0000-000000000000, και το max UUID, ffffffff-ffff-ffff-ffff-ffffffffffff. Τα πάντα σε αυτήν τη σελίδα ακολουθούν το RFC 9562, την προδιαγραφή που αντικατέστησε το RFC 4122 το 2024, οπότε η έξοδος γίνεται αποδεκτή από οποιαδήποτε βιβλιοθήκη, βάση δεδομένων ή API που χειρίζεται καθόλου UUID. Εντός αυτών των ορίων η εγγύηση είναι ισχυρή: κάθε αναγνωριστικό κατασκευάζεται σύμφωνα με το πρότυπο, από κρυπτογραφικά ασφαλή τυχαιότητα, στο δικό σας μηχάνημα, και κανείς άλλος δεν το βλέπει ποτέ.

FAQ

Πώς δημιουργώ ένα UUID;

Επιλέξτε μια έκδοση στο πεδίο Έκδοση, ορίστε πόσα χρειάζεστε στο Πλήθος και πατήστε Δημιουργία. Η σελίδα ανοίγει με ένα μονό αναγνωριστικό έκδοσης 4, που είναι αυτό που θέλουν τα περισσότερα έργα, ώστε ένα συνηθισμένο UUID να απέχει μόνο ένα κλικ. Κάθε τιμή εμφανίζεται με το δικό της κουμπί αντιγραφής, και το Αντιγραφή όλων παίρνει ολόκληρη την παρτίδα με τη μία.

Ποια είναι η διαφορά μεταξύ UUID v4 και v7;

Η έκδοση 4 αποτελείται από 122 τυχαία bit χωρίς καμία απολύτως δομή, οπότε δύο από αυτά δεν έχουν καμία σχέση μεταξύ τους. Η έκδοση 7 δαπανά τα πρώτα 48 bit στο χιλιοστό του δευτερολέπτου που δημιουργήθηκε, προσθέτει έναν μετρητή και 62 τυχαία bit, και επομένως είναι ταξινομήσιμη: μια παρτίδα βγαίνει με τη σειρά που φτιάχτηκε. Χρησιμοποιήστε το v4 όταν ένα αναγνωριστικό πρέπει απλώς να είναι μοναδικό, και το v7 όταν πρόκειται να είναι επίσης κλειδί βάσης δεδομένων.

Ποια έκδοση UUID πρέπει να χρησιμοποιήσω;

Την έκδοση 4 εκτός αν έχετε λόγο να επιλέξετε άλλη. Επιλέξτε την έκδοση 7 αν το αναγνωριστικό γίνει πρωτεύον κλειδί και η απόδοση εισαγωγής έχει σημασία, την έκδοση 5 αν χρειάζεστε την ίδια εισαγωγή για να παράγετε πάντα το ίδιο αναγνωριστικό, και την έκδοση 1 μόνο εάν ένα σύστημα με το οποίο πρέπει να μιλήσετε το ζητά ρητά. Η έκδοση 3 είναι η έκδοση 5 με MD5 αντί για SHA-1, και υπάρχει για λόγους συμβατότητας.

Είναι τα UUID που δημιουργούνται πραγματικά τυχαία και ασφαλή;

Η τυχαιότητα είναι κρυπτογραφικά ασφαλής: προέρχεται από το Web Crypto API του browser σας, μέσω της crypto.randomUUID() ή της crypto.getRandomValues(), όχι από τη Math.random(). Ασφαλές με την έννοια του μη μαντεύσιμου είναι ένα διαφορετικό ερώτημα από το ασφαλές με την έννοια του μυστικού — ένα UUID είναι αναγνωριστικό, και δεν πρέπει να χρησιμοποιείται ως κωδικός πρόσβασης, διακριτικό συνόδου ή κλειδί API.

Μπορώ να δημιουργήσω πολλά UUID ταυτόχρονα;

Ναι, έως 1000 με μία κίνηση. Ορίστε το Πλήθος και πατήστε Δημιουργία· μετά από πενήντα τιμές, το αποτέλεσμα γίνεται ένα ενιαίο μπλοκ κύλισης αντί για μια μακριά λίστα γραμμών. Το Αντιγραφή όλων και το Αποθήκευση σε αρχείο παίρνουν ολόκληρη την παρτίδα, ενωμένη με τον τρόπο που ορίζει η Μορφή αντιγραφής — ένα ανά γραμμή, χωρισμένα με κόμματα, ή σε εισαγωγικά για επικόλληση σε έναν πίνακα.

Γιατί το v3 και το v5 μου δίνουν το ίδιο UUID κάθε φορά;

Επειδή γι' αυτό προορίζονται. Οι εκδόσεις 3 και 5 είναι ντετερμινιστικές: κατακερματίζουν τον χώρο ονομάτων και το όνομα που τους δίνετε, οπότε πανομοιότυπες εισαγωγές παράγουν πάντα ένα πανομοιότυπο αναγνωριστικό, σε οποιοδήποτε μηχάνημα και σε οποιαδήποτε γλώσσα. Αυτό τα κάνει χρήσιμα για την εξαγωγή ενός σταθερού αναγνωριστικού από κάτι που έχετε ήδη, και είναι επίσης ο λόγος που το Πλήθος κρύβεται όταν τα επιλέγετε.

Τι είναι ο Χώρος ονομάτων και το Όνομα, και ποιον χώρο ονομάτων πρέπει να διαλέξω;

Είναι οι δύο εισαγωγές από τις οποίες υπολογίζεται ένα UUID έκδοσης 3 ή 5. Ο Χώρος ονομάτων λέει τι είδους πράγμα είναι το όνομα — DNS για ονόματα κεντρικού υπολογιστή, URL για διευθύνσεις, OID και X.500 για αυτά τα σχήματα καταλόγου, ή Προσαρμοσμένος αν θέλετε να παρέχετε ένα δικό σας UUID χώρου ονομάτων, που είναι η συνήθης επιλογή μέσα σε μια εφαρμογή. Το Όνομα είναι η ίδια η συμβολοσειρά. Διαφορετικοί χώροι ονομάτων δίνουν εντελώς διαφορετικά αποτελέσματα για το ίδιο όνομα, το οποίο είναι και το νόημα του να τους έχουμε.

Γιατί το UUID v7 είναι καλύτερο από το v4 για ένα πρωτεύον κλειδί βάσης δεδομένων;

Λόγω του πού προσγειώνονται οι τιμές στο ευρετήριο. Ένα ευρετήριο διατηρείται σε ταξινομημένη σειρά, και ένα τυχαίο κλειδί v4 προσγειώνεται οπουδήποτε μέσα του, έτσι οι εισαγωγές διασπούν σελίδες σε όλο το δέντρο και τα μέρη που κρατούνται στη μνήμη είναι σπάνια τα μέρη που χρειάζονται στη συνέχεια. Ένα κλειδί v7 ξεκινά με το τρέχον χιλιοστό του δευτερολέπτου, επομένως διαδοχικές εισαγωγές προσγειώνονται μαζί στο τέλος του ευρετηρίου, όπως συμπεριφέρεται ένα διαδοχικό ακέραιο κλειδί — επιτρέποντας παράλληλα σε οποιαδήποτε υπηρεσία να κόψει ένα αναγνωριστικό χωρίς να ρωτήσει έναν κεντρικό μετρητή.

Θα μπορούσαν ποτέ δύο UUID να είναι ίδια;

Κατ' αρχήν ναι, στην πράξη όχι, και αξίζει να γνωρίζετε ποιο ισχύει. Τίποτα δεν επαληθεύει τη μοναδικότητα: υπάρχουν απλώς 2^122 πιθανές τιμές έκδοσης 4, περίπου 5,3 ενδεκάκις εκατομμύρια, και θα χρειαζόσασταν περίπου 2,7 πεντάκις εκατομμύρια από αυτά — ένα δισεκατομμύριο το δευτερόλεπτο για 86 χρόνια — πριν υπάρξει 50% πιθανότητα για μια και μόνο σύγκρουση. Η εγγύηση είναι στατιστική και όχι απόλυτη, και εξαρτάται από το αν η τυχαιότητα είναι πραγματική, γι' αυτό και αυτή η γεννήτρια χρησιμοποιεί το Web Crypto API αντί για μια συνηθισμένη ψευδοτυχαία συνάρτηση.

Μπορώ να χρησιμοποιήσω ένα UUID ως κωδικό πρόσβασης, κλειδί API ή διακριτικό συνόδου;

Όχι, και αυτό είναι το λάθος που κοστίζει περισσότερο. Ένα UUID έκδοσης 4 είναι απρόβλεπτο, αλλά τα αναγνωριστικά αντιμετωπίζονται σαν να είναι δημόσια: καταλήγουν σε URL, ιστορικό του browser, αρχεία καταγραφής διακομιστών, κεφαλίδες referrer και αναλυτικά στοιχεία. Οι εκδόσεις 1 και 7 αποκαλύπτουν επιπλέον πότε δημιουργήθηκαν, και οι εκδόσεις 3 και 5 μπορούν να υπολογιστούν ξανά από οποιονδήποτε γνωρίζει τις εισαγωγές. Για οτιδήποτε πρέπει να παραμείνει μυστικό, χρησιμοποιήστε μια γεννήτρια κωδικών πρόσβασης ή ένα διακριτικό από μια βιβλιοθήκη που προορίζεται για μυστικά.

Το UUID v7 αποκαλύπτει πότε δημιουργήθηκε;

Ναι, στο χιλιοστό του δευτερολέπτου, και αυτό συμβαίνει εκ σχεδιασμού και όχι από παράλειψη — η χρονοσφραγίδα είναι αυτή που κάνει το v7 ταξινομήσιμο. Η γραμμή κάτω από το αποτέλεσμα σας δείχνει τον χρόνο που κωδικοποιείται στην πρώτη τιμή της παρτίδας, ώστε να μπορείτε να δείτε ακριβώς τι εκτίθεται. Η έκδοση 1 φέρει επίσης μια χρονοσφραγίδα. Εάν ο χρόνος δημιουργίας είναι κάτι που προτιμάτε να μην δημοσιεύσετε, η έκδοση 4 δεν περιέχει καθόλου χρόνο.

Το UUID v1 εκθέτει τη διεύθυνση MAC μου;

Όχι εδώ. Το αρχικό σχήμα χρησιμοποιούσε τη διεύθυνση της κάρτας δικτύου του μηχανήματος ως το πεδίο κόμβου, από όπου προέρχεται η φήμη του v1, αλλά το πρότυπο επιτρέπει επίσης ένα τυχαίο αναγνωριστικό κόμβου με επισημασμένο το bit multicast, και αυτό ακριβώς παράγει αυτή η γεννήτρια. Η διεύθυνση του υλικού σας δεν διαβάζεται ποτέ και δεν εμφανίζεται ποτέ στην έξοδο.

Τι αλλάζουν τα Κεφαλαία, το Χωρίς παύλες, τα Άγκιστρα και το urn:uuid:;

Μόνο την παρουσίαση — τα 128 bit από κάτω είναι πανομοιότυπα σε κάθε μορφή. Τα Κεφαλαία εκτυπώνουν τα δεκαεξαδικά ψηφία ως κεφαλαιογράμματα, το Χωρίς παύλες δίνει τη συμπαγή μορφή 32 χαρακτήρων, τα Άγκιστρα τυλίγουν την τιμή σε { } με τον τρόπο που τα Windows και το .NET γράφουν ένα GUID, και το urn:uuid: προσθέτει το πρόθεμα που το κάνει επίσημο URN. Το urn:uuid: απενεργοποιεί τα άλλα δύο όσο είναι ανοιχτό, επειδή το πρότυπο ορίζει ακριβώς μία μορφή URN και αυτή είναι η κανονική με τις παύλες.