Générateur de mot de passe

Générateur de mot de passe

Développer un générateur de mot de passe est un excellent projet pour pratiquer la programmation. Voici comment tu peux le faire en utilisant Python, mais la logique peut être appliquée à d’autres langages aussi.

1. Planification

  • Fonctionnalités : Le générateur devrait permettre à l’utilisateur de choisir la longueur du mot de passe, et peut-être d’inclure des options pour :
    • Inclure des lettres majuscules
    • Inclure des chiffres
    • Inclure des symboles
  • Logique : Le programme doit sélectionner aléatoirement des caractères dans les ensembles choisis et les assembler pour former un mot de passe.

2. Développement

Voici un exemple de code Python pour un générateur de mot de passe simple :

import random
import string

def generate_password(length, include_uppercase=True, include_numbers=True, include_symbols=True):
    # Définir les ensembles de caractères possibles
    lower = string.ascii_lowercase
    upper = string.ascii_uppercase if include_uppercase else ''
    digits = string.digits if include_numbers else ''
    symbols = string.punctuation if include_symbols else ''

    # Combiner tous les ensembles choisis
    all_characters = lower + upper + digits + symbols

    if not all_characters:
        raise ValueError("Vous devez sélectionner au moins un type de caractère !")

    # Générer le mot de passe
    password = ''.join(random.choice(all_characters) for _ in range(length))

    return password

# Entrée utilisateur
try:
    length = int(input("Entrez la longueur du mot de passe : "))
    include_uppercase = input("Inclure des majuscules ? (o/n) : ").lower() == 'o'
    include_numbers = input("Inclure des chiffres ? (o/n) : ").lower() == 'o'
    include_symbols = input("Inclure des symboles ? (o/n) : ").lower() == 'o'

    # Générer et afficher le mot de passe
    password = generate_password(length, include_uppercase, include_numbers, include_symbols)
    print("Votre mot de passe généré est :", password)
except ValueError as e:
    print("Erreur :", e)

3. Explication du code

  • Imports :
  • random est utilisé pour sélectionner des caractères aléatoires.
  • string fournit des ensembles de caractères pré-définis comme les lettres, les chiffres, et les symboles.
  • Fonction generate_password :
  • La fonction prend en entrée la longueur du mot de passe souhaité ainsi que des options pour inclure ou non des majuscules, des chiffres, et des symboles.
  • Les différents ensembles de caractères (lower, upper, digits, symbols) sont combinés selon les options sélectionnées par l’utilisateur.
  • Un mot de passe est ensuite généré en sélectionnant aléatoirement des caractères parmi l’ensemble combiné.
  • Entrée utilisateur :
  • Le programme demande à l’utilisateur d’entrer la longueur du mot de passe et de choisir quelles catégories de caractères inclure.
  • Ces informations sont ensuite passées à la fonction generate_password.
  • Gestion des erreurs :
  • Une erreur est levée si l’utilisateur essaie de générer un mot de passe sans sélectionner aucun type de caractère.

4. Exécution

  • Lorsque vous exécutez ce script, il vous demandera les options pour le mot de passe et renverra un mot de passe généré aléatoirement en fonction de ces critères.

5. Améliorations possibles

  • Interface graphique : Utiliser un module comme Tkinter pour créer une interface graphique pour le générateur.
  • Sécurité accrue : Assurer que le mot de passe généré contient au moins un caractère de chaque catégorie choisie.
  • Stockage des mots de passe : Ajouter une fonctionnalité pour sauvegarder les mots de passe générés de manière sécurisée.

Ce projet simple peut être un excellent point de départ pour explorer des concepts plus avancés de programmation tout en créant quelque chose de pratique et utile.

Pour aller plus loin : exemple avec interface graphique (Tkinter)

Si vous souhaitez aller plus loin, voici un exemple de comment vous pourriez créer une interface graphique simple :

import tkinter as tk
from tkinter import messagebox

def generate_password_gui():
    length = int(length_var.get())
    use_uppercase = uppercase_var.get()
    use_numbers = numbers_var.get()
    use_special_chars = special_chars_var.get()

    password = generate_password(length, use_uppercase, use_numbers, use_special_chars)

    messagebox.showinfo("Mot de passe généré", f"Votre mot de passe : {password}")

# Fenêtre principale
root = tk.Tk()
root.title("Générateur de mot de passe")

# Variables
length_var = tk.StringVar(value="12")
uppercase_var = tk.BooleanVar(value=True)
numbers_var = tk.BooleanVar(value=True)
special_chars_var = tk.BooleanVar(value=True)

# Widgets
tk.Label(root, text="Longueur du mot de passe :").pack()
tk.Entry(root, textvariable=length_var).pack()

tk.Checkbutton(root, text="Inclure des majuscules", variable=uppercase_var).pack()
tk.Checkbutton(root, text="Inclure des chiffres", variable=numbers_var).pack()
tk.Checkbutton(root, text="Inclure des caractères spéciaux", variable=special_chars_var).pack()

tk.Button(root, text="Générer", command=generate_password_gui).pack()

# Lancement de la boucle Tkinter
root.mainloop()

Ce programme crée une fenêtre avec laquelle l’utilisateur peut définir les options et générer un mot de passe. Une fois le bouton « Générer » cliqué, le mot de passe est affiché dans une boîte de dialogue.

Image par Schluesseldienst de Pixabay