Como gerar UUID v4
Escolha quantidade e formato e gere. Os 128 bits sempre contêm a versão 4 e a variante RFC. Maiúsculas e remoção de hífens mudam apenas a apresentação.
- Introduza um inteiro de 1 a 1.000; o limite evita bloqueios e área de transferência enorme.
- Mantenha o formato 8-4-4-4-12, salvo se o destino exigir 32 carateres sem hífens.
- Use maiúsculas apenas por compatibilidade visual; a comparação não deve distinguir maiúsculas de minúsculas.
- Copie a lista e valide comprimento, formato e restrição única no destino.
Exemplos e comportamento esperado
| Entrada | Saída | Observações |
|---|---|---|
1, minúsculas, com hífens |
550e8400-e29b-41d4-a716-446655440000 |
A forma comum usa grupos 8-4-4-4-12. |
1, maiúsculas |
550E8400-E29B-41D4-A716-446655440000 |
As maiúsculas mudam apenas a apresentação. |
1, sem hífens |
550e8400e29b41d4a716446655440000 |
A forma compacta preserva os mesmos 128 bits. |
Nibble de versão |
xxxxxxxx-xxxx-4xxx-… |
O primeiro dígito do terceiro grupo é 4. |
Nibble de variante |
…-[8|9|a|b]xxx-… |
O primeiro dígito do quarto grupo contém a variante RFC. |
Quantidade 1001 |
Rejeitado |
O máximo por operação é 1.000. |
Estrutura e padrão UUID v4
Um UUID é identificador de 128 bits, normalmente escrito como 32 dígitos hexadecimais em grupos 8-4-4-4-12. A versão 4 reserva bits de versão e variante e deixa 122 bits aleatórios.
crypto.randomUUID é preferido. Se não existir, 16 bytes são preenchidos por crypto.getRandomValues e os bits obrigatórios são ajustados. Não há fallback com Math.random. As opções de formato são aplicadas depois.
- A forma canónica geralmente usa minúsculas e hífens.
- A versão é 4.
- A variante começa por 8, 9, a ou b.
Aleatoriedade e colisões
Com 122 bits aleatórios, uma colisão é desprezável em escalas normais quando a fonte é correta. Isto permite que clientes independentes criem identificadores sem coordenar uma sequência central.
Também importam falhas de implementação, máquinas clonadas e colunas truncadas. Preserve o valor completo e use restrição UNIQUE quando duplicatas quebrarem integridade. A página não controla o que ocorre depois da cópia.
- Use restrição única na base de dados.
- Não trunque UUID para criar códigos curtos.
- Teste se importações preservam os 32 dígitos.
Identificador, não segredo
UUID aleatório é menos previsível que inteiro sequencial, mas não é credencial. Pode aparecer em URLs e logs. Autorização deve ser verificada em cada pedido; conhecer o ID não deve conceder acesso.
Também não o use diretamente como chave de criptografia ou token de redefinição. Esses casos exigem entropia, armazenamento, expiração, rotação e revogação específicos.
- Separe identificação e autorização.
- Não trate todo UUID como segredo.
- Use tokens próprios para credenciais.
Lotes e formato textual
Os lotes servem para dados de teste, migrações e dados iniciais. O máximo de 1.000 limita o uso de memória e os erros. Cada UUID é gerado de forma independente.
Hífens facilitam o reconhecimento; alguns sistemas antigos exigem 32 carateres. Maiúsculas e minúsculas podem afetar comparações estritas. Defina uma representação nas fronteiras.
- A saída usa um UUID por linha.
- Maiúsculas e minúsculas representam o mesmo valor.
- Alguns validadores exigem forma canónica.
Usos e alternativas
UUID v4 é útil para chaves distribuídas, registos criados por clientes, ficheiros, correlação e testes. Evita revelar contadores, embora índices de escrita alta precisem ser avaliados.
Timestamp é previsível; hash depende do conteúdo; inteiro autoincremental pode ser mais simples numa única base de dados. Escolha UUID quando unicidade descentralizada trouxer valor.
- Criar IDs sem backend.
- Atribuir correlação em sistemas distribuídos.
- Preparar mapeamentos de importação.
- Não usar UUID v4 para ordenação temporal.
Erros, suporte e verificação
Quantidades não inteiras, menores que um ou maiores que 1.000 são rejeitadas. Sem Web Crypto seguro, a geração falha em vez de usar aleatoriedade fraca.
Testes verificam forma, versão, variante e limite, mas teste determinístico não prova a entropia de um dispositivo real. Esta entrega não apresenta mocks ou Node como validação de navegador real.
- Web Crypto moderno costuma exigir HTTPS ou contexto local fiável.
- Valide a forma nas APIs.
- Regex não prova origem segura.
Diferenças para hash e tempo
UUID v4 é aleatório e independente do conteúdo. Hash é determinístico e serve para integridade; timestamp representa tempo; HMAC autentica dados com chave.
Esta página implementa apenas v4. Se precisar de ordenação temporal, avalie um padrão específico em vez de inventar concatenações.