8.4 crypt -- Funzione per verificare le password Unix

Disponibilità: Unix.

Questo modulo implementa un'interfaccia della procedura crypt(3), che è una funzione di hash a senso unico basata su un algoritmo DES modificato; vedete anche la relativa pagina man di Unix per ulteriori dettagli. Tra i possibili utilizzi annoveriamo la possibilità degli script Python di accettare password digitate dall'utente o quella di tentare la rottura di password Unix tramite un dizionario.

crypt( word, salt)
word sarà in genere una password utente digitata al prompt o in un'interfaccia grafica. salt di solito è una stringa casuale di due caratteri utilizzata per perturbare l'algoritmo DES in una delle sue 4096 modalità. I caratteri in salt devono essere compresi nell'insieme [./a-zA-Z0-9]. Questo metodo restituisce l'hash della password sotto forma di stringa, che sarà composta da caratteri presi dallo stesso alfabeto di salt (i primi due caratteri rappresentano salt stesso).

Un semplice esempio ne illustra un utilizzo tipico:

import crypt, getpass, pwd

def login():
    username = raw_input('Python login:')
    cryptedpasswd = pwd.getpwnam(username)[1]
    if cryptedpasswd:
        if cryptedpasswd == 'x' or cryptedpasswd == '*': 
            raise "Spiacente, al momento non è disponibile il supporto per le password shadow"
        cleartext = getpass.getpass()
        return crypt.crypt(cleartext, cryptedpasswd[:2]) == cryptedpasswd
    else:
        return 1
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.