O que é a decodificação de UUID?
decodificação de UUID é o processo de analisar um UUID para extrair informações sobre o seu:
- Version: Qual versão do UUID (1-8) com base em 4 bits na posição 48-51
- Variant: Qual variante do UUID (geralmente RFC 4122) com base nos bits 64-65
- Components: Extração de carimbo de data/hora, ID do nó ou outros dados com base na versão
- Tempo de geração: Para UUIDs baseados em tempo (v1, v6, v7)
Example: 123e4567-e89b-12d3-a456-426614174000 é um UUID de Versão 1 com o carimbo de data/hora 2228-06-25T20:01:28.545Z quando mostrado com precisão de milissegundos do JavaScript.
Visão geral da estrutura do UUID
| Format | Description |
|---|---|
| 8-4-4-4-12 | 32 dígitos hexadecimais agrupados com hífens |
| Bits de versão | Bits 48-51 (13º dígito) |
| Bits de variante | Bits 64-65 (17º dígito) |
O número da versão aparece como o primeiro dígito hexadecimal no terceiro grupo (por exemplo, 123e4567-e89b-12d3-a456-426614174000 para a versão 1).
Decodificação por versão do UUID
| Version | O que pode ser decodificado |
|---|---|
| UUID v1 |
|
| UUID v3/v5 |
|
| UUID v4 |
|
| UUID v6 |
|
| UUID v7 |
|
Extração de carimbo de data/hora a partir de UUIDs
| Tipo de UUID | Método de extração de tempo | Epoch |
|---|---|---|
| UUID v1 | Combine os bits 0-31, 32-47 e 48-59, reordenando os componentes do carimbo de data/hora | 15 de outubro de 1582 |
| UUID v6 | Combine os bits 0-47 com os bits 52-63; os bits 48-51 são a versão e são excluídos | 15 de outubro de 1582 |
| UUID v7 | Extraia os bits 0-47 (milissegundos Unix) | 1 de janeiro de 1970 |
Regras de validação de UUID
- Verificação de formato: 8-4-4-4-12 dígitos hexadecimais com hífens
- Verificação da versão: O 13º caractere deve ser 1-8
- Verificação da variante: O 17º caractere deve ser 8, 9, A ou B (para RFC 4122)
Expressão regular para validação básica de UUID:
^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$Exemplo de carimbo v7 do UUID
017f22e2-79b0-7cc3-98c4-dc0c0c07398f é o vetor de teste RFC 9562 para UUIDv7. Seus primeiros 48 bits são milissegundos Unix, que decodificam para 2022-02-22T19:22:22.000Z, 1645557742000 milissegundos, ou 1645557742 seconds.
Gerar um novo UUID v7, ou continuar com o Conversor de carimbo Unix. Esses links não incluem o UUID que você inseriu.
Aplicações práticas
- Análise forense: Determinar quando IDs foram criados
- Debugging: Rastrear o comportamento do sistema através dos carimbos de IDs
- Auditing: Validar a integridade cronológica
- Verificações de formato: Detectar IDs malformados; um UUID válido não prova autenticidade
- Recuperação de dados: Reconstruir relações temporais
- Migrações de sistema: Compreender detalhes de implementações legadas de UUID
Extração de endereço MAC (v1/v6)
Para UUID v1 e v6, frequentemente é possível extrair o identificador do nó (endereço MAC) se ele não foi randomizado durante a geração:
- Extraia os últimos 12 dígitos hexadecimais (48 bits) do UUID
- Formate com dois pontos como XX:XX:XX:XX:XX:XX
- Verifique se o endereço MAC é real ou aleatório examinando o bit de multicast
Se o primeiro byte tiver o bit 0x01 definido, é provável que seja um ID de nó randomizado em vez de um endereço MAC real.
Perguntas Frequentes
Posso determinar exatamente quando um UUID v4 foi criado?
Não. UUID v4 é puramente aleatório sem informação de carimbo de data/hora. O momento de criação não pode ser determinado a partir de um valor UUID v4.
Quão precisos são os carimbos de data/hora em UUIDs baseados em tempo?
UUID v1/v6 têm carimbos com precisão de 100 nanossegundos. UUID v7 tem precisão de milissegundos. Contudo, a exatidão real do relógio do sistema pode variar.
Posso converter entre versões de UUID?
Não, não é possível converter diretamente entre versões preservando o mesmo valor identificador. Versões diferentes têm estruturas fundamentalmente distintas.
Posso identificar o computador que gerou um UUID v1?
Se o ID do nó não foi randomizado, um UUID v1 pode conter o endereço MAC do sistema que o gerou. No entanto, muitas implementações modernas randomizam isso por privacidade.
Como posso saber se um UUID é válido?
Verifique o formato (8-4-4-4-12 dígitos hexadecimais), confirme o dígito de versão (13º caractere) ser 1-8 e confirme os bits de variante (17º caractere é 8, 9, A ou B para UUIDs RFC 4122).