¿Por qué UUID que se presenta en el formato de «8-4-4-4-12» (dígitos)? He echado un vistazo a su alrededor por la razón, pero no puede encontrar la decisión que requiere.

Ejemplo de UUID con formato de cadena hexadecimal:
58D5E212-165B-4CA0-909B-C86B9CEE0111

  • En realidad, esa cadena hexadecimal ejemplo es incorrecta. El UUID especificación requiere que la cadena hexadecimal que representa un valor UUID debe estar en minúsculas. La especificación requiere también de una aplicación para ser capaz de analizar un mayúsculas o mayúsculas la cadena, pero sólo en minúsculas se pueden generar. Por desgracia comunes de las implementaciones de violar esta regla, incluyendo los de Apple, Microsoft y otros.
  • Muy interesante, Albahaca, gracias
InformationsquelleAutor Fidel | 2012-05-21

3 Comentarios

  1. 58

    Es separado por time, version, clock_seq_hi, clock_seq_lo, node, como se indica en la followoing rfc.

    De la IETF RFC4122:

    4.1.2.  Layout and Byte Order
    
       To minimize confusion about bit assignments within octets, the UUID
       record definition is defined only in terms of fields that are
       integral numbers of octets.  The fields are presented with the most
       significant one first.
    
       Field                  Data Type     Octet  Note
                                            #
    
       time_low               unsigned 32   0-3    The low field of the
                              bit integer          timestamp
    
       time_mid               unsigned 16   4-5    The middle field of the
                              bit integer          timestamp
    
       time_hi_and_version    unsigned 16   6-7    The high field of the
                              bit integer          timestamp multiplexed
                                                   with the version number  
    
       clock_seq_hi_and_rese  unsigned 8    8      The high field of the
       rved                   bit integer          clock sequence
                                                   multiplexed with the
                                                   variant
    
       clock_seq_low          unsigned 8    9      The low field of the
                              bit integer          clock sequence
    
       node                   unsigned 48   10-15  The spatially unique
                              bit integer          node identifier
    
       In the absence of explicit application or presentation protocol
       specification to the contrary, a UUID is encoded as a 128-bit object,
       as follows:
    
       The fields are encoded as 16 octets, with the sizes and order of the
       fields defined above, and with each field encoded with the Most
       Significant Byte first (known as network byte order).  Note that the
       field names, particularly for multiplexed fields, follow historical
       practice.
    
       0                   1                   2                   3
        0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                          time_low                             |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |       time_mid                |         time_hi_and_version   |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |clk_seq_hi_res |  clk_seq_low  |         node (0-1)            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       |                         node (2-5)                            |
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    
    • ¿Por qué fue la marca de tiempo se divide en tres partes?
    • Los campos que se genera depende de la UUID de la versión. El método preferido no tiempo de uso, ya que revela el momento en que el ID se genera (un posible problema de seguridad). en.wikipedia.org/wiki/…
    • @pmont «Preferido»?
    • href=»https://stackoverflow.com/q/47230521/1739000″>la versión 4 ahora es el versión preferida por la sencilla identificador de la creación.
    • No puedo entender lo que & pmont decir con la Versión 4 de ser el «preferido», y su enlace no ayuda. V4 ser casi completamente al azar hace que este sea el UUID de la versión de último recurso, la menos deseable. Mientras fino para uso casual o para un pequeño número de casos, no conllevan un cierto riesgo de colisiones sobre un gran número de casos. No basta con que yo me preocuparía por la mayoría de los usos. Pero la Versión 1 o similar es sin duda mejor que la V4 por la eliminación de todas las prácticas de riesgo de colisión por la manera de escoger un cierto no-recurrentes punto en el espacio y en el tiempo. V4 es práctica, no preferido.
    • ambos conveniente y preferido (si la generación de números aleatorios es lo suficientemente bueno)! Suena como que todavía no entienden la infinitesimal (casi 0) la probabilidad de colisión, así que aquí está más información: en.wikipedia.org/wiki/Universally_unique_identifier#Collisions
    • Yo no entiendo, como he comentado. Pero decir V4 es preferido sobre V1 es tonta y sin sentido, como decir que los cinturones de seguridad son los preferidos para la seguridad de los vehículos de más de cinturón de seguridad con bolsas de aire. Sí, los cinturones de seguridad muy reducir las posibilidades de lesión, pero cinturones con bolsas de aire pueden reducir las probabilidades de otro cantidad enorme. Los cinturones son mejor que nada, pero las bolsas de aire son aún mejor. V4 es suficiente para muchos propósitos, pero V1 es aún mejor. Si V1 está disponible, no sería no motivo para elegir V4. Si la seguridad o privacidad se refiere a prohibir V1 uso, utilice una de las variaciones similar a la V1, V4 no.
    • V4 es el preferido. Con probabilidades de esta escala, es más fácil conseguir las colisiones con la V1 que con la V4. La razón para ello es que los sistemas, a veces no, y cuando se comparan en estas escalas de probabilidad, se convierte en la principal fuente de colisiones. V1 es más complicado de construir y por lo tanto más propenso a un fracaso parcial.
    • No estoy de acuerdo. V4 depende de criptografía fuerte generador de números aleatorios, que es por tanto más difícil de construir bien que simplemente agarrar el dirección MAC, en el momento actual, y un incremento de número arbitrario, como se ve en V1 UUID. Además, las implementaciones de V1 generalmente son de código abierto y construido hace muchos años con mucho uso en la industria, ahora bien llevado. Alegando V1 es «propenso a error parcial» es simplemente tonto. V1 UUID es el último pieza de su sistema cuando usted necesita preocuparse por el fracaso.

  2. 12

    El formato se define en IETF RFC4122 en la sección 3. El formato de salida se define donde dice «UUID = …»

    3.- Registro De Espacio De Nombres Plantilla

    Espacio de nombres ID: UUID Información de Registro:
    Fecha de registro: 2003-10-01

    Declaró el titular de los nombres:
    JTC 1/SC6 (ASN.1 Relator Del Grupo)

    Declaración de la estructura sintáctica:
    Un UUID es un identificador que es único en el espacio y en el tiempo,
    con respecto al espacio de todos los Uuid. Desde un UUID es un fijo
    tamaño y contiene un campo de tiempo, es posible que los valores de
    rollover (alrededor de A. D. 3400, dependiendo del algoritmo específico
    se utiliza). Un UUID puede ser utilizado para múltiples propósitos, desde el etiquetado
    los objetos con un muy corto tiempo de vida, para identificar de forma fiable
    muy persistente objetos a través de una red.

      The internal representation of a UUID is a specific sequence of
      bits in memory, as described in Section 4.  To accurately
      represent a UUID as a URN, it is necessary to convert the bit
      sequence to a string representation.
    
      Each field is treated as an integer and has its value printed as a
      zero-filled hexadecimal digit string with the most significant
      digit first.  The hexadecimal values "a" through "f" are output as
      lower case characters and are case insensitive on input.
    
      The formal definition of the UUID string representation is
      provided by the following ABNF [7]:
    
      UUID                   = time-low "-" time-mid "-"
                               time-high-and-version "-"
                               clock-seq-and-reserved
                               clock-seq-low "-" node
      time-low               = 4hexOctet
      time-mid               = 2hexOctet
      time-high-and-version  = 2hexOctet
      clock-seq-and-reserved = hexOctet
      clock-seq-low          = hexOctet
      node                   = 6hexOctet
      hexOctet               = hexDigit hexDigit
      hexDigit =
            "0" /"1" /"2" /"3" /"4" /"5" /"6" /"7" /"8" /"9" /
            "a" /"b" /"c" /"d" /"e" /"f" /
            "A" /"B" /"C" /"D" /"E" /"F"
    
  3. 3

    De 128 bits

    La «8-4-4-4-12» formato es sólo para la lectura de los seres humanos. El UUID es realmente un 128-bits número.

    Considerar el formato de cadena requiere el doble de los bytes de la 128 bits de número cuando se almacena o en la memoria. Yo sugeriría usar el número internamente y cuando necesita ser demostrado en una interfaz de usuario o exportados en un archivo, utilice el formato de cadena.

Dejar respuesta

Please enter your comment!
Please enter your name here