8.4 crypt --- Fonction pour vérifier les mots de passe Unix

Disponibilité: Unix

Ce module implémente une interface à la routine crypt(3), qui est une fonction de hachage non-réversible basée sur un algorithme DES modifié. Voir les pages man Unix pour plus de détail. Les utilisations possibles sont le calcul d'un mot de passe Unix par Python, voire la recherche systèmatique de mots de passe par dictionnaire (ceci peut ëtre utilisé pour des intentions malveillantes).

crypt(mot, sel)
L'argument word est normalement un mot de passe utilisateur non crypté. L'argument salt est une chaîne de deux caractères utilisée pour perturber de 4096 façons différentes l'algorithme DES. Le caratère seldoit ëtre dans le domaine [./a-zA-Z0-9]. La fonction retourne le mot de passe crypté sous la forme d'une chaîne du mëme alphabet que le sel (les deux caractère de ce dernier sont les deux premiers de la chaîne retournée).

Un exemple simple illustre une utilisation habituelle:

import crypt, getpass, pwd

def login():
    username = raw_input('Python login:')
    cryptedpasswd = pwd.getpwnam(username)[1]
    if cryptedpasswd:
        if cryptedpasswd == 'x' or cryptedpasswd == '*': 
            raise "Sorry, currently no support for shadow passwords"
        cleartext = getpass.getpass()
        return crypt.crypt(cleartext, cryptedpasswd[:2]) == cryptedpasswd
    else:
        return 1