2009-08-25 4 views
7

Есть ли способ, который я могу вычислить хэш SHA256 в Python 2.4? (Я подчеркиваю: Python 2.4) Я знаю, как это сделать в Python 2.5, но, к сожалению, он недоступен на моем сервере, и обновление не будет выполнено. У меня такая же проблема, как у парня в вопросе this, но с использованием Python 2.4. Любая помощь будет оценена.SHA256 хэш в Python 2.4

EDIT: Извините, я имею в виду SHA 256. Я тоже спешил. Еще раз извините.

ответ

10

Да, вы можете. С Python 2.4 был модуль SHA-1, который делает именно это. См. the documentation.

Однако помните, что код, импортируемый из этого модуля, приведет к ошибкам DeprecationWarnings при запуске с более новым Python.

Хорошо, поскольку требование было затянуто как SHA-256, использование модуля SHA-1 в стандартной библиотеке недостаточно. Я предлагаю проверить pycrypto, он имеет реализацию SHA-256. Существуют также бинарные версии Windows, которые соответствуют старым Pythons, следуйте ссылкам от Andrew Kuchlings old PyCrypto page.

+0

Если вы хешируете пароли, я бы не рекомендовал использовать SHA-1, когда-либо. Он был взломан и не считается небезопасным. Использование MD5 для хэш-паролей также считается небезопасным. Если вы не можете получить доступ к новым хешинговым библиотекам в более поздних версиях Python, я бы рекомендовал сделать системный вызов 'ssh-keygen' (в Linux) и прочитать в создаваемом файле. – MikeyE

+0

Это немного преувеличено сказать «когда-либо», еще в 2009 году, когда был задан вопрос и ответ SHA1 в порядке. Для справки, первый теоретический подход к превращению хэшей SHA1 в столкновение с Марком Стивенсом не был опубликован до 2013 года. Но да: узнайте свои хэши и поймите последствия для безопасности ваших выборов. –

+0

Я тебя слышу. Когда я сказал «когда-либо», я имел в виду «когда-либо с этого момента во времени». Но я думал, что это подразумевается. Вы делаете хороший момент. Я думаю, что ваш ответ был полезен, когда он был написан. Может быть, его можно пересмотреть, чтобы справиться со временем? – MikeyE

8

Вы можете использовать sha модуль, если вы хотите, чтобы остаться совместимым, вы можете импортировать его, как это:

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

Введенный код вычисляет SHA-1, и бесполезно вычислять SHA-256. – pts