Documentation développeur
JavaScript
Mis à jour le 19 septembre 2026

Générer des mots de passe sûrs en JavaScript

Générez des mots de passe aléatoires avec une source cryptographiquement sûre et sans biais de modulo en JavaScript.

Un générateur de mots de passe doit utiliser le générateur aléatoire cryptographiquement sûr de la plateforme ou du système d’exploitation. N’utilisez pas les générateurs pseudo-aléatoires prévus pour les simulations ou les effets d’interface.

Démarrage rapide#

L’exemple suivant utilise l’API standard de JavaScript ou une bibliothèque couramment utilisée pour cette tâche.

Exemple#

JavaScript
1const alphabet = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz23456789!@#$%";23function securePassword(length = ) {4  const limit =  - ( % alphabet.length);5  let output = "";6  while (output.length < length) {7    const bytes = crypto.getRandomValues(new Uint8Array(length));8    for (const byte of bytes) {9      if (byte >= limit) continue; // rejection sampling avoids modulo bias10      output += alphabet[byte % alphabet.length];11      if (output.length === length) break;12    }13  }14  return output;15}1617console.log(securePassword());

Opérations courantes#

Ce second exemple couvre une opération fréquente en production ou une manière plus sûre de traiter des entrées réelles.

Variante courante#

JavaScript
1function securePin(digits = ) {2  const max =  ** digits;3  const array = new Uint32Array();4  const limit =  **  - (( ** ) % max);5  do crypto.getRandomValues(array); while (array[] >= limit);6  return String(array[] % max).padStart(digits, "0");7}

Points importants#

Utilisez uniquement un CSPRNG pour les mots de passe, jetons et codes de récupération. La génération et le stockage des mots de passe sont deux problèmes distincts.

Bonnes pratiques#

  1. Considérez toute entrée externe comme non fiable et gérez explicitement les erreurs d’analyse ou de validation.
  2. Rendez explicites l’encodage, les unités, les formats et les conventions propres aux bibliothèques aux frontières du système.
  3. Ajoutez des tests couvrant l’entrée vide, le texte Unicode, les entrées invalides et des données représentatives de la production.

Références#

Implémenter Password dans d'autres langages :