Question

I se demande s'il y a un python apparenté à la fonction de crypt() de PHP qui effectue d'une manière similaire, la génération aléatoire d'un sel et l'intégrer dans la chaîne enregistrée.

J'ai une table de mots de passe hachés qui ont été créés à l'aide de la touche de chaîne de $5$ pour installer une base SHA256 cryptogramme salée. Ces hachages avaient une certaine entropie supplémentaire enregistré attaché aux deux extrémités à un intervalle fixe, mais le fractionnement de ces caractères au large de la chaîne et d'obtenir la valeur de hachage de noyau est trivial et pas du tout un problème.

J'ai regardé la documentation python et ne peut pas trouver des méthodes hashlib qui semblent utiliser la même syntaxe de la crypt() de php. L'approche utilisée en PHP (le split format d'entrée avec des signes dollar entre le sel, algo et tours) unique à la langue?

Merci.

EDIT:

Il semble que la version révisée de sa propre fonction crypt natif de python va utiliser des procédures similaires à celle de PHP. A partir de la 3.3 documentation préliminaire:

http://docs.python.org/dev/library/crypt.html

EDIT :

Enfin trouvé Passlib, une bibliothèque qui offre cette fonctionnalité en python pur.

http://packages.python.org/passlib/index.html

Était-ce utile?

La solution

Il semble certainement très similaire à crypte de FreeBSD (voir « crypte modulaire » dans la page). Je ne me souviens pas vraiment si elle est de la même façon dans Linux ou autre, mais cela semble indiquer qu'il est pas unique.

Il n'y a pas d'équivalent en Python autant que je sache, mais il ne devrait pas être trop difficile de rouler votre propre car les algorithmes de chiffrement eux-mêmes doivent être pris en charge dans hashlib.

Autres conseils

Je me rends compte que cette question est vieux, mais je l'ai trouvé alors que je tentais de mettre en œuvre un algorithme de connexion en Python qui a été initialement écrit en PHP. La fonction crypte en PHP utilise une d'une poignée d'algorithmes DES, y compris un peu d'insécurité bcrypt. Cela dépend de ce que vous hachez votre chaîne avec. Passlib est à peu près votre meilleur pari pour répliquer la fonctionnalité de votre application devient actuellement de crypte PHP. Prenez un de vos mots de passe hachés et regarder à l'avant de la chaîne. Vous devriez voir quelque chose comme $ 2a $, 3 $, 6 $ (ou similaire). Notez que si cette chaîne n'existe pas, vous êtes plus que probablement en utilisant la norme DES hash.

Prenez cette information à ce lien:

http://pythonhosted.org/passlib/modular_crypt_format.html#mcf-identifiers

Ensuite, il correspond à l'algorithme dont vous avez besoin pour mettre en œuvre en Python. Les identificateurs système sont les liens vers la documentation passlib concernant cet algorithme de hachage. À ce stade, vous devriez avoir toutes les informations dont vous avez besoin pour compléter votre réimplémentation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top