Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment créer un générateur de mot de passe aléatoire en Python

Comment-créer-un-générateur-de-mot-de-passe-aléatoire-en-Python
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Apprenez à coder un générateur de mots de passe en Python - pour générer des mots de passe sécurisés - à l'aide de Python secrets module.

Python est un langage de programmation polyvalent que vous pouvez utiliser dans toutes les applications d'automatisation, de développement Web, d'analyse de données, etc.

Vous pouvez utiliser Python pour automatiser des tâches réelles telles que la surveillance de sites Web, l'envoi d'e-mails et la génération de mots de passe. Dans ce didacticiel, vous apprendrez à créer un générateur de mots de passe sécurisé et aléatoire en Python.

Commençons…

3 Reasons Why You Should Code a Password Generator in Python

Générateur de mot de passe aléatoire

Vous êtes-vous déjà senti fatigué de générer des mots de passe sécurisés et d'en garder une trace ? Voici pourquoi vous devriez envisager de coder un générateur de mot de passe en Python.

1. Automatisez le processus de génération de mot de passe

Au cours d'une journée typique de votre vie, vous visiterez de nombreux sites Web, des sites Web de commerce électronique aux plateformes d'apprentissage et de codage. La plupart des sites Web exigent que vous vous connectiez avec des informations d'identification. Il s'agit d'une tâche répétitive que vous pouvez automatiser à l'aide d'un script Python.

2. Générez des mots de passe sécurisés

Trouver des mots de passe forts qui répondent aux contraintes de sécurité peut être difficile ; les mots de passe triviaux qui ne sont pas forts sont sensibles aux attaques de sécurité.

générateur de mot de passe python

Vous pouvez utiliser Python pour générer par programme sécurisé mots de passe. Cela vous permet d'exécuter le script pour générer des mots de passe selon vos besoins, sans vous soucier de la sécurité du mot de passe.

3. Ajoutez un projet pratique à votre portfolio

Si vous êtes un programmeur Python débutant, vous devez créer des projets pour perfectionner vos compétences et mettre en valeur votre expertise en programmation à travers un portfolio.

En plus d'un simple script Python, vous pouvez le personnaliser davantage et le publier en tant que package PyPI. Vous pouvez également ajouter une interface utilisateur graphique à l'aide de bibliothèques telles que Tkinter, et bien plus encore !

De cette façon, vous pouvez coder votre propre générateur de mots de passe - pour générer et gérer en toute sécurité vos mots de passe - sur les différents sites.

The Random Module in Python: Is It Secure Enough?

Python module aléatoire fournit également des fonctions qui vous permettent d'échantillonner à partir d'un alphabet et de construire apparemment séquences aléatoires. Le module aléatoire génère pseudo-aléatoire séquences. Voyons ce que signifie le pseudo-aléatoire.

Le terme pseudo-aléatoire signifie que même si la séquence peut paraître aléatoire, elle est en réalité déterministe.

Par conséquent, si vous définissez une graine aléatoire, le module random produira la même séquence sur votre machine et pour quiconque exécute le même script avec la même graine.

C'est pourquoi vous ne devez pas utiliser random pour les applications où la sécurité est importante, comme les mots de passe.

Alors, quand pouvez-vous utiliser le random module?

Pour toutes les applications qui ne sont pas sensibles, vous pouvez utiliser le module aléatoire. Par exemple, il y a trois séries de questions, A, B et C dans une classe de 40 étudiants. Vous souhaitez attribuer un ensemble particulier à chaque élève au hasard.

2

Dans ce cas, vous pouvez utiliser random.choice() dans une expression de compréhension de liste, comme illustré ci-dessous :

import random

papers = ['A','B','C']

q_list = [random.choice(papers) for i in range(40)]
print(q_list)
Sample output:
['A', 'A', 'B', 'B', 'B', 'B', 'B', 'C', 'B', 'A', 'C', 'C', 'B', 
'C', 'A', 'B', 'A', 'A', 'C', 'C', 'A', 'A', 'A', 'C', 'A', 'C', 
'A', 'C', 'B', 'B', 'B', 'B', 'A', 'A', 'B', 'B', 'A', 'A', 'B', 'B']

📑 À retenir: Pour les simulations statistiques, vous pouvez utiliser random module; pour les applications sensibles, utilisez le secrets module.

Python Secrets Module: Your Key to Secure Passwords

La proposition d'amélioration de Python, PPE 506, conseille aux développeurs d'utiliser secrets module chaque fois qu'une séquence doit être cryptographiquement sécurisée, comme les mots de passe et les jetons de sécurité.

python-secrets-password-generator

La solution secrets le module possède plusieurs fonctions intégrées qui vous permettent d'effectuer les actions suivantes :

  • Générez des séquences de nombres aléatoires sécurisées pour les applications cryptographiques.
  • Utilisez des fonctions telles que choice(), randbits() et randbelow() pour générer des nombres aléatoires sécurisés.
  • Générez des jetons pour une réinitialisation de mot de passe, des URL temporaires, etc.

How to Code a Password Generator in Python [in 4 Steps]

Pré-requis: Vous devez avoir installé Python 3.6 ou une version ultérieure pour coder avec ce didacticiel. Vous pouvez également exécuter l'exemple de code dans Éditeur de code Python en ligne de Geekflare.

Étape 1 : Importer les modules nécessaires

Dans un premier temps, importons le secrets module. Ce module est intégré à la bibliothèque standard Python, vous pouvez donc l'importer comme suit :

import secrets

Importons également les éléments intégrés de Python string module:

import string

Étape 2 : Définir l'alphabet

L'étape suivante consiste à définir l'alphabet. Alphabet désigne l'ensemble de tous les caractères que nous prendrons en compte pour la génération de mot de passe. Ici, nous voulons qu'il contienne les éléments suivants : lettres minuscules et majuscules et caractères spéciaux.

alphabet

La solution string Le module fournit des constantes de chaîne que nous pouvons utiliser pour définir l'alphabet. Nous utiliserons les constantes de chaîne suivantes :

  • La solution ascii_letters est une concaténation de lettres minuscules et majuscules.
  • La solution digits constant est la chaîne contenant les chiffres de 0 à 9 : '0123456789'.
  • La solution punctuation constant est la chaîne de tous les caractères spéciaux.
letters = string.ascii_letters
digits = string.digits
special_chars = string.punctuation

Enfin, concaténons les constantes de chaîne ci-dessus pour obtenir l'alphabet.

alphabet = letters + digits + special_chars

Étape 3 : Fixez la longueur du mot de passe ; Générer un mot de passe

Stockons la longueur du mot de passe dans la variable, pwd_length. Dans cet exemple, la chaîne de mot de passe a une longueur de 12.

pwd_length = 12

▶️ Maintenant, exécutez la cellule de code suivante pour générer un mot de passe :

pwd = ''
for i in range(pwd_length):
  pwd += ''.join(secrets.choice(alphabet))

print(pwd)
# Sample output
}2:Lz,1!Gvo@

Le code ci-dessus fait ce qui suit :

  • La chaîne de mot de passe pwd est initialement une chaîne vide.
  • Nous savons que secrets.choice(alphabet) renvoie un caractère, échantillonné au hasard à partir du alphabet.
  • Nous utilisons les join() méthode pour ajouter ce caractère à la pwd chaîne de caractères. Parce que nous ne voulons pas d'espace entre les caractères, nous spécifions que le séparateur doit être ''.
  • Pour répéter les étapes ci-dessus pour générer un mot de passe, nous utilisons une boucle qui s'exécute sur autant d'itérations que la longueur du mot de passe.

Étape 4 : Personnalisez vos mots de passe en fonction des contraintes

Vous pouvez personnaliser la génération du mot de passe en vérifiant s'il respecte certaines contraintes.

Par exemple, vérifions si la chaîne de mot de passe générée de longueur 12 satisfait les contraintes suivantes :

  • La corde pwd doit contenir au moins un caractère spécial.
  • Il doit contenir au moins deux chiffres.

Dans l'extrait de code ci-dessous, vous pouvez modifier la condition selon laquelle le if l'instruction vérifie en fonction des contraintes que vous définissez.

while True:
  pwd = ''
  for i in range(pwd_length):
    pwd += ''.join(secrets.choice(alphabet))

  if (any(char in special_chars for char in pwd) and 
      sum(char in digits for char in pwd)>=2):
          break
print(pwd)
# Sample output
lX]{`y47pM4t

Dans la cellule de code ci-dessus, nous utilisons un boucle while infinie qui fonctionne tant que la chaîne de mot de passe pwd ne respecte pas les contraintes. Lorsque le mot de passe généré, pwd satisfait les contraintes, on sort de la boucle infinie.

Voici le code complet du générateur de mot de passe Python :

# necessary imports
import secrets
import string

# define the alphabet
letters = string.ascii_letters
digits = string.digits
special_chars = string.punctuation

alphabet = letters + digits + special_chars

# fix password length
pwd_length = 12

# generate a password string
pwd = ''
for i in range(pwd_length):
  pwd += ''.join(secrets.choice(alphabet))

print(pwd)

# generate password meeting constraints
while True:
  pwd = ''
  for i in range(pwd_length):
    pwd += ''.join(secrets.choice(alphabet))

  if (any(char in special_chars for char in pwd) and 
      sum(char in digits for char in pwd)>=2):
          break
print(pwd)

Conclusion

Félicitations pour avoir terminé ce tutoriel ! 🎉Vous avez maintenant appris à coder un générateur de mots de passe en Python.

  • Pour générer des mots de passe cryptographiquement sécurisés, vous devez utiliser le secrets module et pas le aléatoire module.
  • Un mot de passe fort doit être suffisamment long et doit être aléatoire en ce sens qu'il ne peut pas être facilement prédit ou généré. Il doit s'agir d'une combinaison de lettres majuscules et minuscules, de chiffres et de caractères spéciaux.
  • Python est livré avec un un magnifique module qui fournit toutes les lettres, chiffres et caractères spéciaux dans les constantes lettres_ascii, chiffres et ponctuation, respectivement. Utilisez la syntaxe : chaîne.constante pour accéder à ces constantes de chaîne.
  • Vous pouvez utiliser les constantes ci-dessus pour définir un alphabet (un ensemble de tous les caractères) pour la génération de mot de passe.
  • Une fois que vous avez défini un alphabet, vous pouvez utiliser secrets.choix() pour en prélever un caractère aléatoire. Pour répéter cela pour la longueur du mot de passe, vous pouvez utiliser une boucle for.

▶️ Ensuite, lisez le liste des serveurs web Python à utiliser.

Merci à nos commanditaires
Plus de bonnes lectures sur le développement
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder