Module "crypt" sous Windows

a marqué ce sujet comme résolu.
Auteur du sujet

Bonjour,

Je débute avec Python, et après avoir fini le cours d’introduction sur OpenClassrooms (qui ne m’a pas plus emballé que ça), je suis tombé sur le cours "La programmation orientée objet en Python".

Merci encore à ses contributeurs, je trouve ce cours vraiment top comme introduction.

Après avoir copié le code du 1er TP, et lancé le module, je me retrouve avec un message d’erreur:

ModuleNotFoundError: No module named '_crypt'

During handling of the above exception, another exception occurred:

    raise ImportError("The crypt module is not supported on Windows")
ImportError: The crypt module is not supported on Windows

Après une recherche rapide, je me rends compte que ce module est spécifique à Unix.

Y a-t-il un moyen d'importer ce module sous Windows ?

Merci.

+0 -0

Salut,

Merci pour ton retour. Ce module n’est en effet disponible que pour les Unix, je n’y avais pas fait attention.
Je chercherai un autre module de la lib standard qui pourrait remplir un rôle équivalent dans le cadre de l’exemple en question.

En cherchant un peu je suis tombé sur ce dépôt qui devrait fournir une implémentation du module compatible Windows mais je n’ai pas regardé plus que ça.

Édité par entwanne

Salut,

Je chercherai un autre module de la lib standard qui pourrait remplir un rôle équivalent dans le cadre de l’exemple en question.

Je te conseille d’utiliser hashlib. Le module crypt il ne sert vraiment qu’à faire des mots de passe compatibles avec /etc/shadow. Avec des Python récentes et une Glibc récente il va générer des hash SHA-512 (ce qui n’est pas mauvais) avec 5000 rounds et encodés avec un alphabet Base64 non-standard.

La nécessité d’ajouter des rounds dépend de la criticité de l’application et de la puissance de calcul à allouer (si tu veux ajouter des rounds de manière standard, tu peux utiliser PBKDF2 qui est aussi supporté par hashlib).

Pour générer le salt, tu peux utiliser os.urandom(taille_en_octets).hex() (ou alors ''.join(random.choice(ton_alphabet) for i in range(taille_en_caracters)) pour un alphabet personnalisé).

Bonne soirée,

Édité par r0anne

Pour générer le salt, tu peux utiliser os.urandom(taille_en_octets).hex() (ou alors ''.join(random.choice(ton_alphabet) for i in range(taille_en_caracters)) pour un alphabet personnalisé).

r0anne

Juste pour info, le module secrets permet de générer des données vraiment aléatoires (il peut être utilisé pour de la cryptographie notamment). ;)

"Les accidents dans un système doivent se produire, mais il n’est pas obligatoire qu’ils produisent pour vous et moi." Laurence Gonzales - Deep Survival

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte