Générateur de Base64 aléatoire

Créez des chaînes Base64 aléatoires avec le générateur de nombres aléatoires sécurisé de votre navigateur. Réglez la longueur en octets ou en caractères, générez jusqu’à 1 000 chaînes à la fois et choisissez une sortie standard ou compatible URL.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Réglez la longueur et choisissez l’unité : « Octets aléatoires » ou « Caractères » Base64. Pour une clé, comptez en octets : 32 octets correspondent à une clé de 256 bits.
  2. Indiquez le nombre de chaînes souhaitées et le séparateur à placer entre elles : saut de ligne, virgule ou espace.
  3. Choisissez la variante Standard ou compatible URL. Avec l’unité « Octets aléatoires », vous pouvez aussi désactiver le remplissage si le système cible n’attend pas de signes =.
  4. Cliquez sur « Générer » pour obtenir de nouvelles valeurs, puis sur « Tout copier » ou « Télécharger » pour récupérer la liste.

Octets, caractères et entropie

La robustesse d’une chaîne aléatoire se mesure en bits d’entropie. Chaque octet aléatoire apporte 8 bits : 16 octets donnent donc 128 bits, et 32 octets 256 bits. Base64 ne change que la façon d’écrire ces octets : chaque caractère porte 6 bits, et 3 octets deviennent 4 caractères. L’outil affiche l’entropie de chaque chaîne, ce qui permet de la contrôler d’un coup d’œil.

Avec l’unité Octets aléatoires, la sortie se décode en exactement ce nombre d’octets aléatoires, ce dont ont besoin les clés et les secrets. Avec l’unité Caractères, vous obtenez un nombre exact de caractères, chacun tiré uniformément dans l’alphabet de 64 caractères ; utilisez-la lorsqu’un système demande un jeton de longueur fixe et le stocke sous forme de texte.

OctetsCaractères Base64EntropieUsage courant
121696 bitsNonce (IV) AES-GCM
1624 (22 sans remplissage)128 bitsSels, jetons de session et CSRF, clés AES-128
3244 (43 sans remplissage)256 bitsClés AES-256 et HMAC-SHA256, secrets HS256, clés d’API
6488 (86 sans remplissage)512 bitsClés HMAC-SHA512, secrets HS512

Où utiliser des valeurs Base64 aléatoires

  • Secrets JWT. La RFC 7518 exige une clé HMAC au moins aussi longue que la sortie du hachage : 32 octets pour HS256, 48 pour HS384 et 64 pour HS512. Certaines bibliothèques utilisent la chaîne secrète telle quelle, d’autres la décodent d’abord depuis le Base64 : vérifiez ce qu’attend la vôtre. Le décodeur JWT vérifie les signatures HS256 à HS512 avec l’un ou l’autre type de secret, et le générateur HMAC accepte une clé au format texte, hexa ou Base64.
  • Clés d’application. Laravel, par exemple, conserve une clé de chiffrement de 32 octets dans son fichier .env sous la forme APP_KEY=base64:..., soit le même format qu’une chaîne de 32 octets produite par cet outil.
  • Secrets Kubernetes. Les valeurs placées sous data doivent être en Base64 standard avec remplissage. Une chaîne générée en octets, avec la variante Standard et le remplissage activé, peut y figurer directement, et le Pod reçoit les octets aléatoires bruts. Si l’application attend le texte Base64 lui-même, placez-le plutôt sous stringData.
  • Jetons dans les URL. Les liens de réinitialisation de mot de passe, les codes d’invitation et les autres jetons transmis dans des URL doivent utiliser la variante compatible URL, qui remplace + et / par - et _. Voir Base64URL pour plus de détails.

Pourquoi crypto.getRandomValues et non Math.random

Math.random() est un générateur rapide à usage général. Sa sortie n’est pas conçue pour être imprévisible et, avec certains moteurs, son état interne peut être reconstitué à partir d’une poignée de valeurs. Cet outil utilise crypto.getRandomValues(), un générateur cryptographiquement sûr dont la graine est fournie par le système d’exploitation, soit le même type de source que celle qu’emploient openssl rand et le module secrets de Python. Les valeurs sont créées sur votre appareil et ne sont jamais envoyées ni stockées.

Générer du Base64 aléatoire dans votre code

# Shell : 32 octets aléatoires en Base64 (44 caractères)
openssl rand -base64 32
head -c 32 /dev/urandom | base64

# Python
import base64, secrets
base64.b64encode(secrets.token_bytes(32)).decode()
secrets.token_urlsafe(32)        # compatible URL, sans remplissage, 43 caractères

// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url');   // compatible URL, sans remplissage

// Navigateur
const bytes = crypto.getRandomValues(new Uint8Array(32));
btoa(String.fromCharCode(...bytes));

Questions fréquentes

Quelle longueur choisir pour une clé ou un secret aléatoire ?

16 octets (128 bits) suffisent pour les valeurs qui doivent seulement être uniques et impossibles à deviner, comme les identifiants de session, les jetons CSRF et les sels. Utilisez 32 octets (256 bits) pour les clés AES-256, les clés HMAC-SHA256 et les secrets HS256, et 64 octets pour HMAC-SHA512 et HS512.

Est-ce la même chose que openssl rand -base64 32 ?
Le résultat est du même type. Avec une longueur de 32 octets, la variante Standard et le remplissage activé, chaque chaîne compte 44 caractères, se termine par un = et se décode en 32 octets aléatoires. Les valeurs elles-mêmes, bien sûr, changent à chaque fois.
Faut-il compter en « Octets aléatoires » ou en « Caractères » ?

Comptez en octets lorsque la chaîne sera décodée, comme pour les clés de chiffrement et les Secrets Kubernetes. Comptez en caractères lorsqu’un système a besoin d’un jeton de longueur exacte et utilise le texte tel quel. Une chaîne générée en caractères n’est assurée de se décoder correctement que si sa longueur est un multiple de 4.

Quand faut-il utiliser la variante compatible URL ?
Dès que la valeur se retrouve dans une URL, une chaîne de requête, un cookie ou un nom de fichier. En Base64 standard, / découpe les chemins d’URL et + se transforme en espace dans les chaînes de requête encodées comme un formulaire. Le Base64 compatible URL utilise - et _ à la place et s’écrit généralement sans remplissage.
Les valeurs générées sont-elles stockées ou envoyées quelque part ?

Non. Elles sont générées par du JavaScript dans votre navigateur, ne sont jamais transmises et disparaissent lorsque vous quittez la page. Dès que vous en utilisez une comme véritable secret, conservez-la dans un gestionnaire de mots de passe ou un gestionnaire de secrets plutôt que dans des messages de discussion ou des tickets.