Outils Malins

Générateur UUID v4 cryptographique

Génère des UUID v4 (RFC 4122) via crypto.randomUUID() natif, source d'aléa du navigateur. Batch 1, 5, 10, 50, 100.

Générateur UUID v4

UUID v4 générés via crypto.randomUUID(), source d'aléa cryptographique du navigateur.

    Qu'est-ce qu'un UUID ?

    Un UUID (Universally Unique IDentifier) est un identifiant de 128 bits (16 octets, 32 caractères hexadécimaux) conçu pour être globalement unique sans avoir besoin d'une autorité centrale. Standardisé par la RFC 4122 (et son successeur RFC 9562, mai 2024).

    Format : xxxxxxxx-xxxx-Vxxx-Nxxx-xxxxxxxxxxxx V est la version et N le variant.

    Les 5 versions d'UUID

    VersionConstructionUsage
    v1Timestamp + MACHistorique, peu utilisé (fuite MAC)
    v3Hash MD5 d'un namespace + nomDéterministe, namespace
    v4122 bits aléatoiresLe plus courant aujourd'hui
    v5Hash SHA-1 d'un namespace + nomDéterministe, namespace
    v7Timestamp Unix ms + aléaTriables chronologiquement, clés primaires DB

    Probabilité de collision

    Avec 122 bits aléatoires, il existe 2¹²² ≈ 5,3 × 10³⁶ UUID v4 possibles. Pour avoir 50 % de chance d'observer une collision, il faut générer ~2,7 milliards d'UUID par seconde pendant 1 an (paradoxe des anniversaires). En pratique, on considère qu'une collision est impossible pour tous les usages courants.

    Cas d'usage

    • Clés primaires de base de données — éviter la séquentialité prédictible, faciliter la fusion de bases (préférer v7 si tri).
    • Tokens de session et API keys — aléa cryptographique acceptable.
    • Identifiants de fichiers, transactions, événements.
    • Idempotency keys pour les API REST.
    • Tracing distribué (OpenTelemetry, X-Request-Id).

    Génération dans les principaux langages

    // JavaScript (navigateur + Node ≥ 14.17)
    crypto.randomUUID()
    
    // Python
    import uuid
    str(uuid.uuid4())
    
    // Java
    java.util.UUID.randomUUID().toString()
    
    // Go
    import "github.com/google/uuid"
    uuid.New().String()
    
    // PostgreSQL
    SELECT gen_random_uuid();   -- (pgcrypto)
    
    // Bash
    uuidgen

    UUID v7 : la nouvelle référence

    Standardisée en mai 2024 (RFC 9562), la v7 place le timestamp Unix en millisecondes au début du UUID, suivi de 74 bits d'aléa. Les UUID générés successivement sont donc triables par date. Avantages massifs pour les bases de données (indexation B-tree efficace, pagination par cursor) tout en conservant l'unicité de la v4. Adopter v7 pour les nouveaux projets dès que possible.

    Pièges courants

    • Utiliser Math.random() au lieu de crypto.randomUUID() → non-cryptographique, prédictible.
    • Stocker un UUID en VARCHAR(36) plutôt qu'en BINARY(16) ou UUID natif → 2× plus de place, index 2× plus lents.
    • Utiliser v4 comme clé primaire pour de très grandes tables → fragmentation B-tree, performance dégradée. Préférer v7.
    • Croire que l'UUID est « secret » : 122 bits d'aléa = sécurité cryptographique, mais l'UUID lui-même apparaît dans les logs, URLs.

    Questions fréquentes

    UUID v4 ?

    122 bits d'aléa, version la plus utilisée.

    Sûr crypto ?

    Oui via crypto.randomUUID() — basé sur CSPRNG OS.

    Collision possible ?

    Théoriquement, négligeable en pratique (1 sur 10³⁶).

    UUID v7 ?

    Nouveau standard 2024, timestamp + aléa, triable.

    Stocker en DB ?

    BINARY(16) ou UUID natif, pas VARCHAR(36).

    Outils complémentaires

    Sources