UUID v4 gerado
- Entrada
- crypto.randomUUID()
- Saída esperada
- 3f9e6a2c-114b-4e29-8ab5-77d31f2c9a04
O 13º hex é "4" (versão) e o 1º hex do quarto grupo é "8" (variante RFC 4122, os dois primeiros bits em "10").
gerador uuid v4 online
Um UUID v4 carrega 122 bits de puro acaso: dos 128 bits totais, 4 são fixados em "0100" para marcar a versão e 2 marcam a variante RFC 4122, sobrando 122 para o gerador sortear. A qualidade dessa ferramenta não está no formato, que qualquer biblioteca reproduz, está em de onde vêm esses 122 bits.
O 13º hex é "4" (versão) e o 1º hex do quarto grupo é "8" (variante RFC 4122, os dois primeiros bits em "10").
A máscara apaga o nibble alto original e escreve "4" no lugar, sempre, seja qual for o byte sorteado.
O segundo gerado pode vir lexicograficamente menor que o primeiro; só a versão 7, com timestamp embutido, garante ordem de criação.
UUID v4 é um identificador único de 128 bits gerado com bits aleatórios, exceto pelos 4 bits de versão e 2 bits de variante, o que deixa 122 bits realmente aleatórios. O formato é xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx, onde o dígito de versão é sempre 4 e y é 8, 9, a ou b.
Porque Math.random() roda um gerador pseudoaleatório rápido, não criptográfico; a própria especificação da linguagem (ECMA-262) diz que a função não precisa produzir uma sequência segura contra previsão. crypto.randomUUID() lê do CSPRNG do sistema operacional, a mesma fonte usada para gerar chaves e tokens de sessão, e é o caminho que esta ferramenta usa por padrão.
Tecnicamente sim, mas com custo de performance: os 122 bits aleatórios espalham cada inserção por uma posição imprevisível do índice, forçando reorganizações que uma chave sequencial evitaria. Para esse caso específico, a versão 7 da mesma RFC 9562 resolve o problema, porque embute o timestamp de criação nos primeiros 48 bits e sai naturalmente ordenável.
Gerar 1 bilhão de UUIDs v4 de uma vez deixa a chance de algum par coincidir em torno de 9,4×10⁻²⁰, um cálculo direto da aproximação do paradoxo do aniversário sobre 2¹²² valores possíveis. Nesse patamar, o risco prático de um sistema real não vem da matemática do UUID, vem de bug de implementação, como reaproveitar o mesmo valor por engano.