Créer un générateur de mots de passe Python : guide du débutant

Linda Hamilton
Libérer: 2024-10-09 16:19:02
original
1021 Les gens l'ont consulté

Avoir votre générateur de mots de passe hébergé et à votre service uniquement est un outil incroyable et un projet à démarrer ; dans ce guide, nous explorerons comment créer un générateur de mot de passe simple et l'héberger à l'aide de Pythonanywhere.

Table des matières

  1. Introduction à la sécurité des mots de passe
  2. Configuration de votre environnement Python
  3. Construire le générateur de mots de passe
    • Importation des modules nécessaires
    • Création de la fonction Générer un mot de passe
    • Développer la fonction principale
    • Exécuter le script
  4. Comprendre le code
  5. Amélioration du générateur de mots de passe
  6. Hébergement de votre projet sur PythonAnywhere
  7. Conclusion ## Introduction à la sécurité des mots de passe

À une époque où les violations de données sont de plus en plus courantes, il est plus important que jamais d'avoir des mots de passe forts et uniques pour chacun de vos comptes en ligne. Un mot de passe fort comprend généralement un mélange de lettres majuscules et minuscules, de chiffres et de caractères spéciaux. Il doit également être suffisamment long pour résister aux attaques par force brute. Cependant, créer et mémoriser de tels mots de passe peut s’avérer difficile. C'est là qu'un générateur de mots de passe s'avère utile.

Configuration de votre environnement Python

Avant de nous lancer dans le codage, assurez-vous que Python est installé sur votre ordinateur. Vous pouvez le télécharger sur le site officiel de Python. Pour ce projet, nous utiliserons Python 3.12.7

Pour vérifier votre version de Python, ouvrez votre invite de commande ou votre terminal et tapez :

python --version
Copier après la connexion

Build a Python Password Generator: A Beginner

Si vous voyez un numéro de version commençant par 3 (par exemple, Python 3.8.5), vous êtes prêt à commencer.

Le code complet du générateur de mot de passe

Commençons par examiner l'intégralité du code de notre générateur de mots de passe. Ne vous inquiétez pas si cela semble intimidant ; nous le décomposerons ligne par ligne dans la section suivante.

import random
import string

def generate_password(length=12):
    characters = string.ascii_letters + string.digits + string.punctuation
    password = ''.join(random.choice(characters) for _ in range(length))
    return password

def main():
    print("Welcome to the Simple Password Generator!")

    try:
        length = int(input("Enter the desired password length: "))
        if length <= 0:
            raise ValueError("Password length must be positive")
    except ValueError as e:
        print(f"Invalid input: {e}")
        print("Using default length of 12 characters.")
        length = 12

    password = generate_password(length)
    print(f"\nYour generated password is: {password}")

if __name__ == "__main__":
    main()


Copier après la connexion

Maintenant, décomposons cela et examinons chaque partie en détail, mais avant cela, nous pouvons consulter cet article étonnant que j'ai écrit : Construire un pirate de mot de passe avancé avec Python (Guide complet)

Build a Python Password Generator: A Beginner

Importation des modules nécessaires

import random
import string
Copier après la connexion

Ces deux lignes importent les modules dont nous avons besoin pour notre générateur de mots de passe :

  • Le module [random](https://www.w3schools.com/python/module_random.asp) fournit des fonctions pour générer des nombres aléatoires et effectuer des sélections aléatoires. Nous l'utiliserons pour choisir au hasard les caractères de notre mot de passe.

  • Le module [string](https://docs.python.org/3/library/string.html) propose des constantes contenant différents types de caractères (lettres, chiffres, ponctuation). Cela nous évite de saisir manuellement tous les caractères possibles que nous pourrions souhaiter dans un mot de passe.

    La fonction generate_password

def generate_password(length=12):
Copier après la connexion

Cette ligne définit une fonction nommée generate_password. Le mot-clé def en Python est utilisé pour définir une fonction. La fonction prend un paramètre, length, avec une valeur par défaut de 12. Cela signifie que si aucune longueur n'est spécifiée lors de l'appel de la fonction, elle générera un mot de passe de 12 caractères.

characters = string.ascii_letters + string.digits + string.punctuation
Copier après la connexion

Cette ligne crée une chaîne nommée caractères qui contient tous les caractères possibles que nous pourrions utiliser dans notre mot de passe. Décomposons-le.

  • string.ascii_letters contient toutes les lettres ASCII, minuscules (a-z) et majuscules (A-Z).
  • string.digits contient tous les chiffres décimaux (0-9).
  • string.punctuation contient tous les caractères de ponctuation.

En les additionnant avec l'opérateur, nous créons une seule chaîne contenant tous ces caractères.

    password = ''.join(random.choice(characters) for _ in range(length))
Copier après la connexion

Cette ligne est l'endroit où se produit la génération réelle du mot de passe. C'est un peu complexe, alors décomposons-le davantage.

  • random.choice(characters) sélectionne au hasard un caractère de notre chaîne de caractères.
  • for _ in range(length) crée une boucle qui s'exécute un certain nombre de fois. Le trait de soulignement _ est utilisé comme nom de variable jetable, car nous n'avons pas besoin d'utiliser la variable de boucle.
  • Cette boucle fait partie d'une expression génératrice qui crée un itérateur de caractères choisis aléatoirement.
  • ''.join(...) prend cet itérateur et joint tous les caractères en une seule chaîne, avec une chaîne vide '' entre chaque caractère.

Le résultat est stocké dans la variable mot de passe.

    return password
Copier après la connexion

Cette ligne renvoie le mot de passe généré par la fonction.

La fonction principale

def main():
Copier après la connexion

Cette ligne définit notre fonction principale, qui gérera l'interaction de l'utilisateur et appellera notre fonction generate_password.

    print("Welcome to the Simple Password Generator!")
Copier après la connexion

Cette ligne imprime un message de bienvenue pour l'utilisateur.

        try:
            length = int(input("Enter the desired password length: "))
            if length <= 0:
                raise ValueError("Password length must be positive")
Copier après la connexion

These lines are part of a try block, which allows us to handle potential errors:

  • We prompt the user to enter a desired password length and attempt to convert their input to an integer using int().
  • If the user enters a value less than or equal to 0, we manually raise a ValueError with a custom message.
        except ValueError as e:
            print(f"Invalid input: {e}")
            print("Using default length of 12 characters.")
            length = 12
Copier après la connexion

This except block catches any ValueError that might occur, either from int() if the user enters a non-numeric value, or from our manually raised error if they enter a non-positive number.

  • We print an error message, including the specific error (e).
  • We inform the user that we'll use the default length of 12 characters.
  • We set length to 12.
        password = generate_password(length)
        print(f"\nYour generated password is: {password}")
Copier après la connexion

These lines call our generate_password function with the specified (or default) length, and then print the resulting password.

Running the Script

    if __name__ == "__main__":
        main()
Copier après la connexion
Copier après la connexion

This block is a common Python idiom. It checks if the script is being run directly (as opposed to being imported as a module). If it is, it calls the main() function.

Lets explore __**name__** = "__main__"

Understanding if __name__ == "__main__" in Python

The line if __name__ == "__main__": might look strange if you're new to Python, but it's a very useful and common pattern. Let's break it down step by step:

Cheeks?

This line checks whether the Python script is being run directly by the user or if it's being imported as a module into another script. Based on this, it decides whether to run certain parts of the code or not.

What are __name__ and "__main__"?

  1. __name__ is a special variable in Python. Python sets this variable automatically for each script that runs.
  2. When you run a Python file directly (like when you type python your_script.py in the command line), Python sets __name__ to the string "__main__" for that script.
  3. However, if your script is imported as a module into another script, __name__ is set to the name of the script/module. ## An analogy to understand this better

Imagine you have a Swiss Army knife. This knife has many tools, like a blade, scissors, and a screwdriver.

  • When you use the knife directly, you use it as the "main" tool. This is like running your Python script directly.
  • But sometimes, you might just want to use one specific tool from the knife as part of a bigger task. This is like importing your script as a module into another script.

The if __name__ == "__main__": check is like the knife asking, "Am I being used as the main tool right now, or am I just lending one of my tools to another task?"

Why is this useful?

This check allows you to write code that can be both run on its own and imported by other scripts without running unintended code. Here's a practical example.

    def greet(name):
        return f"Hello, {name}!"

    def main():
        name = input("Enter your name: ")
        print(greet(name))

    if __name__ == "__main__":
        main()
Copier après la connexion

In this script:

  • If you run it directly, it will ask for your name and greet you.
  • If you import it into another script, you can use the greet function without the script automatically asking for input. ## How it works in our password generator

In our password generator script.

    if __name__ == "__main__":
        main()
Copier après la connexion
Copier après la connexion

This means:

  • If you run the password generator script directly, it will call the main() function and start generating passwords.
  • If you import the script into another Python file, it won't automatically start the password generation process. This allows you to use the generate_password() function in other scripts without running the interactive part. Build a Python Password Generator: A Beginner

Our password generator works, and in the next part of this article, we will modify the password generator to do a lot more, which includes.

Custom Character Sets: Allow users to specify which types of characters they want in their password (e.g., only letters and numbers, no special characters).

Password Strength Checker: Implement a function to evaluate the strength of the generated password and provide feedback to the user.

Multiple Passwords: Give users the option to generate multiple passwords at once.

GUI Interface: Create a graphical user interface using a library like Tkinter to make the program more user-friendly.

Password Storage: Implement a secure way to store generated passwords, possibly with encryption.

Ressource

  • Démarrez avec les pirates de mots de passe
  • 20 extensions Python essentielles pour Visual Studio Code
  • Utiliser Python pour le Web Scraping et l'extraction de données
  • Démarrez avec Python
  • Créer des cartes interactives avec Folium et Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal