À l'aide de la crypte module dans Windows?
Au RALENTI et Python version 3.3.2, j'essaie de l'appeler le module python comme suit:
hash2 = crypt(word, salt)
Je l'importer en haut de mon programme comme suit:
from crypt import *
Le résultat que j'obtiens est le suivant:
Traceback (most recent call last):
File "C:\none\of\your\business\adams.py", line 10, in <module>
from crypt import *
File "C:\Python33\lib\crypt.py", line 3, in <module>
import _crypt
ImportError: No module named '_crypt'
Cependant, lorsque j'exécute le même fichier adams.py
dans Ubuntu, avec Python 2.7.3, il s'exécute à la perfection, pas d'erreurs.
J'ai essayé la suivante pour résoudre le problème de mon Windows & Python 3.3.2 (même si je suis sûr que l'OS n'est pas la question, la version de Python ou de mon utilisation de la syntaxe est la question):
- Renommer le répertoire dans le
Python33
répertoire deLib
àlib
- Renommer le
crypt.py
danslib
à_crypt.py
. Cependant, il s'avère que l'ensemble de lacrypt.py
module dépend d'un module externe appelé_crypt.py
trop. - Parcouru internet à télécharger quoi que ce soit à distance approprié pour ressembler à
_crypt.py
Ce n'est pas Python, droit? C'est moi...(?) Je suis l'aide de la syntaxe à l'importation et l'utilisation des modules externes qui sont acceptables dans 2.7.3, mais pas au point 3.3.2. Ou ai-je trouvé un bug dans 3.3.2?
OriginalL'auteur adampski | 2013-11-09
Vous devez vous connecter pour publier un commentaire.
Je suppose que c'est parce que
crypt
est un Unix Service Spécifique.À droite au haut de la docs pour
crypt
:heu, en quoi? Votre IDE n'a pas d'importance. Windows n'est pas Unix. Il n'a pas d'importance ce que l'IDE que vous utilisez, Unix-les services spécifiques ne fonctionne pas dans Windows.
Hmmm. Étrange. Jamais l'esprit, je vous remercie pour ce à moi.
OriginalL'auteur roippi
Une meilleure approche serait d'utiliser le python passlib module qui génère compatible crypte les hashs de mots de passe linux (je suppose que c'est ce que vous voulez probablement). J'ai vérifié cela en utilisant les fichiers Kickstart en injectant le générés mot de passe haché valeur dans rootpw et les attributs de l'utilisateur. Les fonctions dont vous avez besoin sont:
Le premier paramètre est auto-explicatif.
La seconde & troisième paramètre avoir à faire avec la conformité aux spécifications et sont nécessaires pour générer linux compatible hachage de mots de passe***
(voir: Passlib: SHA256 spec, format & algorithme)
***REMARQUE: Testé avec SHA512, mais je ne vois aucune raison pourquoi il ne devrait pas travailler avec SHA256 ou MD5.
Je ne comprends vraiment pas votre commentaire. En tout cas, je n'ai pas encore trouvé une méthode plus facile de générer des mots de passe pour Linux-compatible VMs pendant l'utilisation de Windows comme un environnement de développement 😉 Rien d'autre a prouvé trop de douleur ou a été d'une qualité douteuse/fonctionnalité. Néanmoins, cette lib est crypte-compatible si vous regardez les docs :]
La crypte(3) fonction dans le système de la libc peut supporter plus que le vieux UNIX méthode. En particulier, la glibc a un SHA-512-dérivés de hachage de la construction ($6$...). Alors si vous générez un mot de passe /etc/mot de passe, nginx basic auth ou quoi que ce soit d'autre qui utilise crypt(3), vous n'avez pas à utiliser de vieux UNIX algorithme. Python crypte module prend en charge ces méthodes alternatives depuis Python 3.3.
Passlib est la voie à suivre si vous avez besoin d'un os indépendants, relyable méthode pour générer des différentes tables de hachage, y compris le Linux prise en charge de la crypte variantes. Je n'ai pas entendu de passlib avant, mais après quelques recherches je trouve ça plutôt sympa. 0 dépendances par défaut, mais il va utiliser d'autres libs si installé ou nécessaire pour spéciale pour les méthodes de hachage. Également très bien documenté.
OriginalL'auteur Kounavi
J'ai trouvé une solution de rechange module appelé fcrypt disponible ici:
Il est vieux, donc ne vous attendez pas python3 de compatibilité.
OriginalL'auteur Gringo Suave
Vous pouvez utiliser à la place "bcrypt' pour cela sur un PC Windows, ceci est fait parce que la crypte est un UNIX module uniquement ne sera pas compatible sous windows facilement. Aller pour bcrypt
Cela permettra de faire votre travail.
Pour de plus amples informations, visitez:
http://passlib.readthedocs.io/en/stable/install.html
https://pypi.python.org/pypi/bcrypt/2.0.0
OriginalL'auteur Akash Kumar