Maison >développement back-end >Tutoriel Python >Créez un générateur de mot de passe Python sécurisé à l'aide de Secret Lib

Créez un générateur de mot de passe Python sécurisé à l'aide de Secret Lib

Barbara Streisand
Barbara Streisandoriginal
2024-10-16 12:10:29228parcourir

Build a Secure Python Password Generator Using Secret Lib

Après avoir construit le générateur de mots de passe, j'ai reçu des critiques étonnantes, et deux m'ont marqué : Guillaume Ste-Marie a préconisé l'utilisation de graines pour augmenter le caractère aléatoire, et Christian Ledermann a également préconisé que les secrets devrait remplacer random car random n'est pas vraiment aléatoire.

Le module secrets génère des nombres aléatoires cryptographiquement forts, adaptés à la gestion de données telles que les mots de passe, l'authentification de compte, les jetons de sécurité et les secrets associés.

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

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

    import secrets
    import string

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

    def main():
        print("Welcome to the Secure 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()

Maintenant, décomposons cela et examinons chaque partie en détail.

Importation des modules nécessaires

    import secrets
    import string

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

  • Le module secrets fournit des fonctions permettant de générer des nombres aléatoires cryptographiquement forts, adaptés à la gestion des secrets tels que les mots de passe. C'est plus sécurisé que le module aléatoire à des fins cryptographiques.

  • Le module string 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):
        characters = string.ascii_letters + string.digits + string.punctuation
        password = ''.join(secrets.choice(characters) for _ in range(length))
        return password

Cette fonction génère notre mot de passe sécurisé :

  • Nous créons une chaîne de caractères contenant tous les caractères possibles pour notre mot de passe.

  • Nous utilisons secrets.choice() pour sélectionner aléatoirement les caractères de cette chaîne. C'est plus sécurisé que d'utiliser random.choice() car il utilise le générateur de nombres aléatoires cryptographiquement sécurisé du système d'exploitation.

  • Nous joignons ces caractères en une seule chaîne pour former notre mot de passe.

    La fonction principale

    def main():
        print("Welcome to the Secure 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}")

Cette fonction gère l'interaction de l'utilisateur :

  • Il demande à l'utilisateur la longueur du mot de passe.
  • Il gère les erreurs potentielles (comme la saisie non numérique ou les nombres négatifs).
  • Il appelle generate_password() avec la longueur spécifiée et imprime le résultat. ## Exécuter le script
    if __name__ == "__main__":
        main()

Ce bloc garantit que la fonction main() n'est appelée que si le script est exécuté directement, pas s'il est importé en tant que module.

Amélioration du générateur de mots de passe

Voici quelques idées pour améliorer encore votre générateur de mots de passe :

  1. Jeux de caractères personnalisés : permettez aux utilisateurs de spécifier les types de caractères qu'ils souhaitent dans leur mot de passe.
  2. Vérificateur de force du mot de passe : implémentez une fonction pour évaluer la force du mot de passe généré.
  3. Mots de passe multiples : donnez aux utilisateurs la possibilité de générer plusieurs mots de passe à la fois.
  4. Interface GUI : créez une interface utilisateur graphique à l'aide d'une bibliothèque comme Tkinter.
  5. Stockage des mots de passe : implémentez un moyen sécurisé de stocker les mots de passe générés, éventuellement avec cryptage. ##Conclusion

En utilisant le module secrets au lieu du module aléatoire, nous avons créé un générateur de mots de passe plus sécurisé.

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!

Déclaration:
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