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
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é.
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.
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 modulesecrets
.
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é.
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(
) etrandbelow()
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.
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înepwd
. 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.