Saltar al contenido

UUID de Java – Javatpoint

octubre 15, 2021
java uuid

¿Qué es UUID?

UUID son las siglas de Universal Unique Identifier (Identificador único universal). UUID están estandarizados por la Open Software Foundation (OSF). Es parte del Entorno de Computación Distributiva (DCE). Un UUID es un número único de 36 caracteres. También se conoce como Identificador único global (GUID).

Clase UUID de Java

  • Un UUID es una clase que representa un identificador único universal (UUID) inmutable.
  • Un UUID representa un valor largo de 128 bits que es exclusivo para todos los propósitos prácticos. Se utiliza para identificar información en el sistema informático.
  • La clase UUID pertenece al paquete java.util.
  • La clase UUID implementa la interfaz serializable y comparable y extiende la clase Object.
  • Existen muchas variantes de estos identificadores globales.
  • Los métodos de la clase UUID son para manipular la variante Leach-Salz.

Representación de UUID de Java

La representación del UUID utiliza dígitos hexadecimales.

237e9877-e79b-12d4-a765-321741963000

El UUID de Java se compone de dígitos hexadecimales junto con cuatro guiones (-). Es un número único de 36 caracteres, incluidos cuatro guiones. Un UUID puede ser nulo, en el que todos los bits se ponen a cero.

UUID de Java

Nombre Longitud (dígitos hexadecimales) Longitud (bytes) Contenido
time_low 8 4 bajo 32 bits del tiempo
time_mid 4 2 medio 16 bits del tiempo
time_hi y_version 4 2 Versión de 4 bits en el MSB, seguida de los 12 bits más altos de la época
clock_seq_hi_and_res clock_seq_low 4 2 Variante de 1-3 bits en los bits más significativos seguidos de la secuencia de reloj de 13-15 bits
nodo 12 6 ID de nodo de 48 bits

Uso de UUID de Java

Se utiliza para crear lo siguiente:

  • ID de sesión para la aplicación web
  • ID de transacción
  • Nombre de archivo aleatorio
  • La clave principal para la tabla de la base de datos

Variante de Leach-Salz: El campo de variante contiene un valor que identifica el diseño del UUID. La representación de un UUID variante 2 (Leach-Salz) es la siguiente:

  • 0xFFFFFFFF00000000 (indica tiempo_bajo)
  • 0X0000000FFFF0000 (indica time_mid)
  • 0x0000000000000FF (indica time_hi)
  • 0x00000000000F000 (versión)

El diseño de bits definido anteriormente es válido solo para un UUID con un valor de variante de 2 que indica la variante de Leach-Salz.

Tipos de UUID

Hay cuatro tipos de UUID:

  • UUID basado en el tiempo (versión 1)
  • UUID de seguridad DCE (versión 2)
  • UUID basado en nombre (versión 3 y 5)
  • UUID generado aleatoriamente (versión 4)

Versión 3 y 5

Las versiones 3 y 5 de UUID generan el UUID utilizando el hash del espacio de nombres y el nombre. Los identificadores de espacio de nombres son UUID como el sistema de nombres de dominio (DNS), URL y OID (identificadores de objeto), etc. La diferencia entre la versión 3 de UUID y la versión 5 de UUID es el algoritmo hash.

La versión 3 usa el algoritmo MD5 (128 bits), mientras que la versión 5 usa el algoritmo SHA-1 (160 bits). Recortamos el hash resultante a 128 bits y luego reemplazamos 4 bits por la versión y 2 bits por la variante. Java no proporciona la implementación de la versión 5.

Versión 4

La implementación de la versión 4 de UUID utiliza números aleatorios como fuente. Utiliza un valor impredecible como semilla para generar un número aleatorio para reducir la posibilidad de colisiones.


Variantes de UUID

La variante más utilizada es la 2 (Leach-Salz). Existen los siguientes tipos de variantes:

  • 0: Está reservado para compatibilidad con versiones anteriores de NCS.
  • 2: Leach-Salz
  • 6: Está reservado para compatibilidad con versiones anteriores de Microsoft.
  • 7: Está reservado para una futura definición.

UUID 2 de Java

En la figura anterior, «V» indica la versión UUID y la «R» (1-3) indica la variante UUID.

Constructor de UUID de Java

Podemos generar diferentes tipos de UUID usando constructor. La sintaxis del constructor es:

UUID = nuevo UUID (long mostSigBits, long lessSigBits);

El argumento mostSigBits se utiliza para el MSB (64 bits) del UUID y LessSigBits se convierte en LSB (64 bits) del UUID.


Métodos de la clase UUID

UUID ramdomUUID () método

El método randomUUID () genera aleatoriamente el UUID. Siempre que ejecutamos el programa, genera un nuevo UUID. La firma del método es:

UUID estático público randomUUID ()

El método devuelve el UUID generado aleatoriamente.

Ejemplo

El siguiente ejemplo genera un UUID aleatorio.

import java.util.UUID; clase pública UUIDExample {public static void main (String[] args) {UUID uuid = UUID.randomUUID (); // Genera UUID aleatorio System.out.println (uuid); }}

Producción

c6a8669e-ee95-4c42-9ef6-4a9b61380164

Método de la versión UUID ()

La versión asociada a este UUID. El número de versión describe cómo se generó este UUID. El método devuelve el número de versión del UUID. La firma del método es:

versión public int ()

Ejemplo

import java.util.UUID; class UUIDVersionExample {public static void main (String arg[]) lanza UnsupportedOperationException {// devuelve un UUID con el valor especificado uuid = UUID.fromString («c81d4e2e-bcf2-11e6-869b-7df92533d2db»); UUID uuid1 = UUID.fromString («5289df73-7df5-3326-bcdd-22597afb1fac»); System.out.println («La versión UUID es:» + uuid.version ()); // invocando el método de versión System.out.println («La versión UUID es:» + uuid1.version ()); }}

Producción

UUID version is: 1
UUID version is: 3

Método de variante UUID ()

El número de variante asociado con este UUID. Describe el diseño del UUID. El método devuelve el número de variante del UUID. La firma del método es:

variante public int ()

Ejemplo

import java.util.UUID; class UUIDvariantExample {public static void main (String arg[]) lanza UnsupportedOperationException {UUID uuid = UUID.fromString («c81d4e2e-bcf2-11e6-869b-7df92533d2db»); UUID uuid1 = UUID.fromString («5289df73-7df5-3326-fcdd-22597afb1fac»); System.out.println («La variante UUID es:» + uuid.variant ()); // devuelve el número de variante System.out.println («La variante UUID es:» + uuid1.variant ()); }}

Producción

UUID variant is: 2
UUID variant is: 7

Método UUID node ()

El método node () devuelve el valor del nodo asociado con el UUID. Es un valor de nodo de 48 bits. Se construye a partir del campo de este UUID. Contiene la dirección IEEE 802 (dirección MAC) de la máquina. Lanza el UnsupportedOperationException si el UUID no es un UUID de la versión 1.

La firma del método es:

nodo largo público ()

Ejemplo

import java.util.UUID; class UUIDnodeExample {public static void main (String arg[]) {// devuelve un UUID con el valor especificado UUID uuid = UUID.fromString («237e9877-e79b-12d4-a765-321741963000»); System.out.println («Valor de nodo:» + uuid.node ()); // devuelve el valor del nodo}}

Producción

Node value: 55075465998336

close