Générateur de chaîne aléatoire

Choisissez une longueur, un nombre et des caractères, et obtenez des chaînes aléatoires cryptographiquement sûres pour des jetons, des clés d’API, des données de test ou des noms de fichiers. Elles sont créées dans votre navigateur avec son générateur de nombres aléatoires sécurisé et ne sont envoyées nulle part.

Modèles
Jusqu’à 500 chaînes de 1 024 caractères chacune au plus.
Caractères

Vos propres caractères s’ajoutent à ceux qui sont cochés ; les répétitions et les espaces sont ignorés. Le préfixe est placé tel quel devant chaque chaîne et n’ajoute pas d’aléa.

Entropie par chaîne
191 bits
Caractères au choix
62
Liste
10 × 32 caractères

128 bits ou plus suffisent pour des jetons de session, des clés d’API et des secrets : personne ne peut les deviner.

Création des chaînes…

Les clés et jetons aléatoires finissent souvent dans le fichier .env d’un serveur. Il vous faut aussi le serveur ? À partir de 3,02 € par mois aujourd’hui, parmi 2 226 serveurs.

Fonctionne dans votre navigateur : rien de ce que vous saisissez n’est envoyé ailleurs.

Comment les chaînes aléatoires sont créées

Chaque caractère est tiré indépendamment parmi les caractères que vous avez choisis, avec crypto.getRandomValues, le générateur de nombres aléatoires cryptographiquement sûr du navigateur, la même source que pour les clés de chiffrement. Un simple nombre aléatoire modulo le nombre de caractères rendrait certains caractères un peu plus probables ; cette page tire de nouveau chaque fois qu’une valeur aléatoire tombe dans le reste inégal, de sorte que chaque caractère a exactement la même probabilité. La solidité d’une chaîne se mesure en bits d’entropie :

bits = length × log2(characters to choose from)

32 × log2(62) = 32 × 5.954 ≈ 190.5 bits

Chaque bit double le nombre d’essais dont un attaquant a besoin. Un préfixe comme sk_ n’apporte rien, car il est identique dans chaque chaîne ; exclure les caractères qui se ressemblent retire un peu, car il y a moins de caractères parmi lesquels choisir. Math.random(), que beaucoup de générateurs rapides utilisent, n’est pas sûr : sa sortie peut être prédite à partir des valeurs précédentes.

Exemple

Une chaîne de 32 caractères faite de lettres et de chiffres offre 62 choix par caractère, soit 32 × log2(62) ≈ 190,5 bits : bien au-delà de ce qu’on peut deviner. 32 caractères hexadécimaux portent 32 × 4 = 128 bits, comme 16 octets aléatoires. Base64url utilise 64 caractères de 6 bits chacun : 43 d’entre eux contiennent 258 bits, ce que donne l’encodage de 32 octets aléatoires. Un code à 6 chiffres n’a qu’un million de possibilités (19,9 bits) : dans une liste de 500 codes de ce genre, la probabilité que deux soient identiques est déjà d’environ 11,7 %.

Sur le serveur

Pour créer des chaînes aléatoires sur un serveur Linux ou dans un script de déploiement, utilisez la source aléatoire sécurisée du système, /dev/urandom, via openssl ou tr :

shell
openssl rand -hex 16          # 32 hex characters
openssl rand -base64 32 | tr '+/' '-_' | tr -d '='
head -c 500 /dev/urandom | LC_ALL=C tr -dc 'A-Za-z0-9' | head -c 32

Questions

Ces chaînes aléatoires sont-elles sûres ?

Oui. Elles viennent de crypto.getRandomValues, le générateur de nombres aléatoires cryptographiquement sûr de votre navigateur, et chaque caractère est tiré sans biais. Elles sont créées sur votre appareil et jamais envoyées à un serveur : personne d’autre ne les voit. Pour des clés et des jetons, utilisez au moins 128 bits d’entropie, par exemple 22 lettres et chiffres ou 32 caractères hexadécimaux.

Comment générer une chaîne aléatoire de 32 caractères ?

Réglez la longueur sur 32, la valeur par défaut, et choisissez les caractères : les lettres et chiffres donnent environ 190 bits, l’hexadécimal exactement 128. Sur un serveur, openssl rand -hex 16 affiche 32 caractères hexadécimaux aléatoires. En Python : secrets.token_hex(16), ou secrets.token_urlsafe(24) pour 32 caractères Base64url.

Quelle longueur pour une clé d’API ou un jeton aléatoire ?

Au moins 128 bits d’entropie : ni la clé ni le jeton ne peuvent alors être devinés, même avec des milliards d’essais par seconde. Cela fait 22 lettres et chiffres, 32 caractères hexadécimaux ou 22 caractères Base64url. De nombreux services utilisent 32 à 40 caractères avec un préfixe comme sk_ qui indique à quoi sert la clé, ce qui aide les outils de détection de secrets à trouver les clés divulguées.

Quelle est la différence entre une chaîne hexadécimale et une chaîne Base64url ?

L’hexadécimal utilise 16 caractères (0–9 et a–f), donc chacun porte 4 bits. Base64url en utilise 64 (lettres, chiffres, - et _), donc chacun porte 6 bits et la chaîne est d’un tiers plus courte pour la même solidité. Les deux sont sûrs dans les URL, les noms de fichiers et les fichiers de configuration. L’hexadécimal est plus facile à lire ; Base64url est plus compact.

Deux chaînes générées peuvent-elles être identiques ?

Avec assez de longueur, pratiquement jamais : avec des chaînes de 128 bits, il en faudrait environ 2^64, soit 18 milliards de milliards, avant qu’une répétition devienne probable. Les chaînes courtes se répètent plus vite qu’on ne le croit, à cause du paradoxe des anniversaires : parmi 500 codes à six chiffres, deux sont identiques environ 12 % du temps. La page vous avertit quand une répétition est probable dans votre liste.