Cet outil génère du matériel de clé aléatoire cryptographiquement sûr. Contrairement aux générateurs existants de chaînes et de mots de passe (qui utilisent Math.random() et sont impropres aux secrets), cet outil est piloté par l'entropie et adossé à un CSPRNG.
Entrée pilotée par l'entropie. Vous spécifiez une entropie cible en bits (par défaut 256, pas 8) — la sécurité souhaitée — et l'outil déduit le nombre d'octets (bytes = ceil(bits/8)). C'est le bon modèle mental pour les clés : un secret JWT HS256 a besoin de 256 bits d'entropie quel que soit le nombre de caractères qui le représentent. Ne pensez pas « combien de caractères », pensez « combien de sécurité ».
Deux branches de sortie :
Encodage par octets (par défaut — laissez Alphabet personnalisé vide). Génère ceil(entropyBits/8) octets aléatoires avec crypto.randomBytes() et affiche le même matériel dans trois encodages côte à côte — hex, base64, base64url — pour que vous copiiez celui qu'attend votre consommateur. Chaque octet apporte 8 bits d'entropie, donc l'entropie livrée égale toujours la demande.
Alphabet personnalisé (remplissez Alphabet personnalisé). Échantillonne crypto.randomInt(tailleAlphabet) par caractère — échantillonnage par rejet interne de Node, sans biais de module, sans boucle de rejet manuelle. L'entropie réelle est longueur × log₂(tailleAlphabet), potentiellement inférieure à la demande (ex. alphabet 32 symboles × 10 caractères = 50 bits, pas 256) ; l'outil vous avertit en rouge quand c'est le cas, car une courte chaîne à alphabet personnalisé peut être bien plus faible qu'elle n'en a l'air.
Pourquoi trois encodages côte à côte ? Une clé 256 bits = 64 caractères hex, ~44 base64, ou 43 base64url. Différents systèmes attendent différents formats ; montrer les trois permet de choisir correctement sans relancer.
Cas d'usage : clés AES-256, clés HMAC, secrets de signature JWT, clés API, secrets de session, toute valeur qu'un attaquant ne doit pas pouvoir deviner. crypto.randomBytes() et crypto.randomInt() puisent dans le CSPRNG de l'OS — jamais Math.random().