Mdp::py

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Saisie et hachage de mot de passe
Modules getpass, hashlib
Voir aussi Systeme::py · Reseau::py

Cette fiche regroupe deux besoins courants en Python : la saisie masquée d'un mot de passe (sans écho à l'écran) via getpass, et le hachage d'un mot de passe via hashlib pour ne jamais le stocker en clair.

Saisie masquée

from getpass import getpass
mot_de_passe = getpass("Tapez votre mot de passe : ")

Hachage

Le module hashlib expose la liste des algorithmes disponibles :

import hashlib
hashlib.algorithms_guaranteed

Calcul d'une empreinte SHA-1 :

mot_de_passe = hashlib.sha1(b"mot de passe")
mot_de_passe.hexdigest()

Exemple : vérification d'un mot de passe

import hashlib
from getpass import getpass

chaine_mot_de_passe = b"azerty"
mot_de_passe_chiffre = hashlib.sha1(chaine_mot_de_passe).hexdigest()

verrouille = True
while verrouille:
    entre = getpass("Tapez votre mot de passe : ")
    entre = entre.encode()

    entre_chiffre = hashlib.sha1(entre).hexdigest()
    if entre_chiffre == mot_de_passe_chiffre:
        verrouille = False
    else:
        print("Mot de passe incorrect")

print("mot de passe accepté...")

Note : SHA-1 est utilisé ici à titre pédagogique. Pour du stockage réel de mots de passe, préférer une fonction de dérivation lente et salée (par exemple hashlib.pbkdf2_hmac, ou une bibliothèque comme bcrypt/argon2).

Voir aussi

  • Systeme::py — flux standard, signaux et exécution de commandes
  • Reseau::py — programmation réseau par sockets