Apprenez à coder un générateur de mots de passe en Python – pour générer des mots de passe sécurisés – en utilisant le module Python secrets.

Python est un langage de programmation polyvalent que vous pouvez utiliser dans des 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 tutoriel, vous apprendrez à créer un générateur de mot de passe sécurisé et aléatoire en Python.

Commençons..

3 raisons pour lesquelles vous devriez coder un générateur de mot de passe en Python

Random-Password-Generator

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

1. Automatiser le processus de génération de mots de passe

Au cours d’une journée normale, vous visitez de nombreux sites web, qu’il s’agisse de sites de commerce électronique ou de plateformes d’apprentissage et de codage. La plupart d’entre eux 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érer des mots de passe sécurisés

Trouver des mots de passe forts qui répondent aux contraintes de sécurité peut s’avérer difficile ; les mots de passe triviaux qui ne sont pas forts sont susceptibles de faire l’objet d’attaques de sécurité.

python-password-generator

Vous pouvez utiliser Python pour générer des mots de passe sécurisés de manière programmatique. Cela vous permet d’exécuter le script pour générer des mots de passe en fonction des besoins, sans vous soucier de la sécurité du mot de passe.

3. Ajoutez un projet pratique à votre portefeuille

Si vous êtes un programmeur Python débutant, vous devriez créer des projets pour affiner vos compétences et présenter votre expertise en programmation dans un portfolio.

En plus d’un simple script Python, vous pouvez le personnaliser davantage et le publier en tant que paquet 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 vos mots de passe en toute sécurité – sur les différents sites.

Le module aléatoire en Python : Est-il suffisamment sûr ?

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

Le terme pseudo-aléatoire signifie que même si la séquence semble aléatoire, elle est en fait déterministe.

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

C’est pourquoi vous ne devriez pas utiliser le module random pour des applications où la sécurité est importante, comme les mots de passe.

Quand pouvez-vous utiliser le module random?

Pour toutes les applications qui ne sont pas sensibles, vous pouvez utiliser le module random. Par exemple, il y a trois séries de questionnaires, A, B et C dans une classe de 40 étudiants. Vous souhaitez attribuer un jeu particulier à chaque étudiant de manière aléatoire.

2

Dans ce cas, vous pouvez utiliser random.choice() à l’intérieur d’une expression de compréhension de liste, comme indiqué ci-dessous :

import random

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

q_list = [random.choice(papers) for i in range(40)]
print(q_list)
Exemple de résultat :
['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']

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

Module Python Secrets : Votre clé pour des mots de passe sécurisés

La proposition d’amélioration de Python, PEP 506, conseille aux développeurs d’utiliser le module secrets 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

Le module secrets comporte plusieurs fonctions intégrées qui vous permettent d’effectuer les opérations suivantes :

  • Générer des séquences de nombres aléatoires sûres pour les applications cryptographiques.
  • Utilisez des fonctions telles que choice(), randbits() et randbelow() pour générer des nombres aléatoires sûrs.
  • Générer des jetons pour la réinitialisation d’un mot de passe, des URL temporaires, etc.

Comment coder un générateur de mot de passe en Python [en 4 étapes]

Prérequis: Vous devez avoir installé Python 3.6 ou une version ultérieure pour coder avec ce tutoriel. Vous pouvez également exécuter le code d’exemple dans l‘éditeur de code Python en ligne de Geekflare.

Étape 1 : Importer les modules nécessaires

Pour commencer, importons le module secrets. Ce module est intégré à la bibliothèque standard de Python, vous pouvez donc l’importer comme suit :

import secrets

Importons également le module string intégré à Python :

import string

Étape 2 : Définition de l’alphabet

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

alphabet

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

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

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

alphabet = lettres chiffres caractères_spéciaux

Étape 3 : Fixer 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 mots de passe est de longueur 12.

pwd_length = 12

▶️ Exécutez maintenant 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)
# Exemple de sortie
}2:Lz,1!Gvo@

Le code ci-dessus effectue les opérations suivantes :

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

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

Vous pouvez personnaliser la génération du mot de passe en vérifiant s’il répond à certaines contraintes.

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

  • La chaîne pwd doit contenir au moins un caractère spécial.
  • Elle doit contenir au moins deux chiffres.

Dans l’extrait de code ci-dessous, vous pouvez modifier la condition que l’instruction if 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)
# Exemple de sortie
lX]{`y47pM4t

Dans la cellule de code ci-dessus, nous utilisons une boucle while infinie qui s’exécute tant que la chaîne de mots de passe pwd ne satisfait pas aux contraintes. Lorsque le mot de passe généré, pwd, satisfait aux contraintes, nous sortons de la boucle infinie.

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

# importations nécessaires
import secrets
import string

# définir l'alphabet
lettres = string.ascii_lettres
chiffres = string.digits
special_chars = string.punctuation

alphabet = lettres chiffres_chars_spéciaux

# fixer la longueur du mot de passe
pwd_length = 12

# générer une chaîne de mots de passe
pwd = ''
for i in range(pwd_length) :
  pwd = ''.join(secrets.choice(alphabet))

print(pwd)

# générer un mot de passe respectant les contraintes
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 mot de passe en Python.

  • Pour générer des mots de passe cryptographiquement sûrs, vous devez utiliser le module secrets et non le module random.
  • Un mot de passe fort doit être suffisamment long et aléatoire, c’est-à-dire qu’il ne peut pas être facilement prédit ou généré. Il doit être composé d’une combinaison de lettres majuscules et minuscules, de chiffres et de caractères spéciaux.
  • Python est livré avec un module string intégré qui fournit toutes les lettres, tous les chiffres et tous les caractères spéciaux dans les constantes ascii_letters, digits et punctuation, respectivement. Utilisez la syntaxe : string.constant pour accéder à ces constantes.
  • Vous pouvez utiliser les constantes ci-dessus pour définir un alphabet (un ensemble de caractères) pour la génération de mots de passe.
  • Une fois l’alphabet défini, vous pouvez utiliser secrets.choice() pour prélever un caractère aléatoire. Pour répéter cette opération pour toute la longueur du mot de passe, vous pouvez utiliser une boucle for.

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