🔐projets

Creer un gestionnaire de mots de passe en Python

30 mars 2026 5 min de lecture

Pourquoi créer un gestionnaire de mots de passe en NSI ?

En spécialité NSI, tu apprends à résoudre des problèmes concrets avec du code. Créer un gestionnaire de mots de passe est un projet parfait pour cela ! Il te permet de mettre en pratique plusieurs notions clés du programme :

  • La gestion de fichiers : pour stocker tes mots de passe de manière persistante (dans un fichier JSON par exemple).
  • Les algorithmes de hachage et de cryptographie : pour sécuriser tes données sensibles.
  • Les interfaces en ligne de commande (CLI) : pour interagir avec ton programme.
  • La manipulation de structures de données complexes : comme les dictionnaires.

Au-delà de l'aspect technique, ce projet te sensibilise à un enjeu crucial du numérique : la sécurité des données personnelles. Utiliser des mots de passe uniques et forts pour chaque site est essentiel, et un gestionnaire est l'outil idéal pour cela.

Les fondations : comprendre la sécurité de base

Avant de coder, il faut comprendre les principes de sécurité que nous allons implémenter. Nous n'allons pas stocker les mots de passe en clair, ce serait très dangereux !

Le hachage du mot de passe maître

Ton programme aura besoin d'un mot de passe maître unique pour déverrouiller l'accès à la base. Nous ne stockerons jamais ce mot de passe. À la place, nous stockerons son haché (ou hash).

Le hachage est une fonction à sens unique : facile à calculer dans un sens, mais pratiquement impossible à inverser. Quand tu saisis ton mot de passe maître, le programme le hache et compare le résultat avec le hash stocké. S'ils correspondent, l'accès est accordé.

Nous utiliserons la bibliothèque hashlib de Python. Voici un exemple simple :

import hashlib
mot_de_passe = "monSuperSecret".encode('utf-8')
hash_obj = hashlib.sha256(mot_de_passe)
hash_hex = hash_obj.hexdigest()
print(hash_hex) # Affiche une chaîne de 64 caractères hexadécimaux

Le chiffrement des identifiants

Les identifiants (site, login, mot de passe) seront, eux, chiffrés dans le fichier de stockage. Le chiffrement est une opération réversible (contrairement au hachage) à condition de posséder la bonne clé. Nous utiliserons une bibliothèque comme cryptography ou des algorithmes simples comme XOR avec une clé dérivée du mot de passe maître pour ce projet éducatif.

Architecture et code pas à pas

Structurons notre projet. Nous aurons besoin de plusieurs fonctions principales.

1. Initialisation et création du fichier de stockage

La première exécution du programme doit créer un fichier (par exemple vault.json) qui contiendra le hash du mot de passe maître et les données chiffrées. Nous utiliserons le format JSON pour sa simplicité avec le module json de Python.

2. Fonction d'authentification

Cette fonction demande le mot de passe maître, calcule son hash SHA-256 et le compare à celui stocké. Elle retourne True ou False. Si l'authentification réussit, elle peut aussi retourner une « clé » dérivée du mot de passe maître pour déchiffrer les données.

3. Les fonctions cœur : ajouter, récupérer, lister

  • add_password(service, username, password) : Chiffre et ajoute une nouvelle entrée.
  • get_password(service) : Recherche et déchiffre le mot de passe pour un service donné.
  • list_services() : Affiche la liste de tous les services enregistrés (sans afficher les mots de passe).

Voici un squelette de code pour te donner une idée de la structure :

import json, hashlib, os

class PasswordManager:
def __init__(self, filename="vault.json"):
self.filename = filename
self.data = self.load_vault()

def load_vault(self):
if os.path.exists(self.filename):
with open(self.filename, 'r') as f:
return json.load(f)
else:
# Structure initiale
return {"master_hash": "", "entries": {}}

def save_vault(self):
with open(self.filename, 'w') as f:
json.dump(self.data, f, indent=4)

# À toi de compléter les méthodes authenticate, add, get !

Améliorations et défis pour aller plus loin

Une fois la version basique fonctionnelle, tu peux complexifier ton projet pour monter en compétences et impressionner ton examinateur !

  • Génération de mots de passe forts : Ajoute une fonction qui génère aléatoirement un mot de passe avec des lettres, chiffres et caractères spéciaux en utilisant le module secrets (plus sûr que random).
  • Interface graphique (Tkinter) : Quitte la ligne de commande et crée une fenêtre avec des champs de saisie et des boutons. C'est excellent pour pratiquer la programmation événementielle.
  • Chiffrement robuste : Remplace ton algorithme de chiffrement maison par une bibliothèque sérieuse comme cryptography.fernet qui gère les clés de manière sécurisée.
  • Système de « coffre-fort » par utilisateur : Permets à plusieurs personnes d'utiliser le programme sur le même ordinateur avec des fichiers de stockage différents.

Ce qu'il faut retenir pour le Grand Oral et le projet

Ce projet est un excellent candidat pour ton projet de NSI ou une illustration pour ton Grand Oral. Pour le présenter efficacement :

  1. Explique le problème : La difficulté de gérer des dizaines de mots de passe uniques et forts.
  2. Détaille ta solution algorithmique : Le double système (hachage irréversible pour l'authentification, chiffrement réversible pour les données).
  3. Montre des extraits de code clés : La fonction de hachage, la structure de données, une fonction d'ajout.
  4. Parle des limites et améliorations : Cela montre ton esprit critique. Par exemple, ton programme local est moins pratique qu'un gestionnaire cloud, mais tu évites les risques de piratage de serveur.

En réalisant ce projet, tu ne fais pas qu'apprendre à coder en Python. Tu développes une compréhension pratique de la cybersécurité, une compétence de plus en plus valorisée. Alors, à ton clavier !

📚 Pour aller plus loin

Questions fréquentes

Est-ce que mon gestionnaire de mots de passe fait maison est aussi sûr que LastPass ou 1Password ?

Pour un usage éducatif et personnel sur ton propre ordinateur, un gestionnaire fait maison avec des bibliothèques robustes (comme cryptography) peut être très sécurisé. Cependant, les solutions professionnelles offrent des fonctionnalités avancées (synchronisation cloud chiffrée, audit de sécurité, partage sécurisé, alertes en cas de fuite de données) et sont constamment mises à jour par des experts. Ton projet est parfait pour comprendre les principes, mais pour un usage quotidien intensif, une solution éprouvée est recommandée.

Je n'arrive pas à installer la bibliothèque 'cryptography' avec pip. Que faire ?

L'installation de 'cryptography' peut parfois nécessiter des compilateurs (comme build-essential sur Linux). Si tu rencontres des erreurs, voici deux solutions : 1) Utilise un environnement en ligne comme Replit qui gère les dépendances pour toi. 2) Pour une version simplifiée du projet, tu peux te contenter du module 'hashlib' (pour le mot de passe maître) et utiliser un chiffrement très simple (comme XOR ou un chiffrement par décalage de César) pour les données. L'important est de comprendre le principe de ne jamais stocker les mots de passe en clair.

Comment puis-je tester et valider que mon programme est vraiment sécurisé ?

Pour tester ton projet : 1) Ouvre ton fichier JSON généré (vault.json) avec un éditeur de texte. Tu ne devrais voir que du texte illisible (chiffré) et un hash, jamais tes mots de passe en clair. 2) Modifie un seul caractère du hash stocké : ton programme doit refuser l'accès. 3) Essaye de "tricher" en court-circuitant la fonction d'authentification dans ton code : les données devraient rester illisibles. Tu peux aussi présenter ces tests dans ton projet pour montrer ta démarche de validation.

Ce projet est-il assez complexe pour être présenté comme projet de NSI en Terminale ?

Absolument ! La version de base (hachage, chiffrement simple, gestion JSON) couvre déjà des attendus du programme. Pour le rendre plus ambitieux et montrer ton investissement, ajoute une des améliorations proposées : une interface graphique avec Tkinter (bonus pour l'IHM), la génération de mots de passe forts (manipulation de strings et d'aléa), ou l'utilisation d'une bibliothèque de cryptographie avancée. L'essentiel est de bien documenter ton code, d'expliquer tes choix algorithmiques et d'analyser les limites de ta solution.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
gestionnaire mdp Pythonprojet securite
Pixel