2009-08-25 9 views
7

Existe-t-il un moyen de calculer un hachage SHA256 en Python 2.4? (Je souligne: Python 2.4) Je sais comment le faire en Python 2.5 mais malheureusement il n'est pas disponible sur mon serveur et une mise à niveau ne sera pas faite. J'ai le même problème que le gars dans la question this, mais en utilisant Python 2.4. Toute aide est la bienvenue.SHA256 hachage en Python 2.4

EDIT: Désolé, je veux dire SHA 256. J'étais trop pressé. Encore pardon.

Répondre

10

Oui, vous pouvez. Avec Python 2.4, il y avait un module SHA-1 qui fait exactement cela. Voir the documentation. Cependant, gardez à l'esprit que l'importation de code à partir de ce module provoquera DeprecationWarnings lorsqu'il est exécuté avec un nouveau Python.

Ok, comme l'exigence a été resserrée pour être SHA-256, l'utilisation du module SHA-1 dans la bibliothèque standard n'est pas suffisante. Je suggère de vérifier pycrypto, il a une implémentation SHA-256. Il existe également des versions binaires Windows pour faire correspondre les anciens Pythons, suivez les liens d'Andrew Kuchlings old PyCrypto page.

+0

Si vous êtes des mots de passe de hachage, je ne recommanderais pas d'utiliser SHA-1, jamais. Il a été fissuré et n'est pas considéré comme dangereux. L'utilisation de MD5 pour hacher les mots de passe est également considérée comme non sécurisée. Si vous ne pouvez pas accéder aux nouvelles bibliothèques de hachage dans les versions plus récentes de Python, je vous recommande de faire un appel système à 'ssh-keygen' (sous Linux) et de lire le fichier qu'il crée. – MikeyE

+0

Il est un peu exagéré de dire «jamais», en 2009 quand la question et la réponse ont été écrites SHA1 était OK. À titre de référence, la première approche théorique de la collision des hachages SHA1 par Marc Stevens n'a pas été publiée avant 2013. Mais ouais: connaissez vos hashs et comprenez les implications sécuritaires de vos choix. –

+0

Je vous entends. Quand j'ai dit «jamais», ce que je voulais dire était «jamais à partir de maintenant». Mais, je pensais que c'était implicite. Vous faites un bon point. Je pense que votre réponse était bonne quand elle a été écrite. Peut-être pourrait-il être révisé pour être à jour? – MikeyE

8

Vous pouvez utiliser le module sha, si vous voulez rester compatible, vous pouvez l'importer comme ceci:

try: 
    from hashlib import sha1 
except ImportError: 
    from sha import sha as sha1 
+0

Le code affiché calcule SHA-1, et il est inutile de calculer SHA-256. – pts

Questions connexes