Значение пароля Python md5

У меня есть эта форма запроса на изменение пароля. В которой пользователь вводит свои старые пароли.

этот старый пароль является форматом md5.

Как сравнить значение md5 от db до старого пароля, введенного пользователем

import md5 oldpasswd_byuser=str("tom") oldpasswd_db="sha1$c60da$1835a9c3ccb1cc436ccaa577679b5d0321234c6f" opw= md5.new(oldpasswd_byuser) #opw= md5.new(oldpasswd_byuser).hexdigest() if(opw == oldpasswd_db): print "same password" else: print "Invalid password" 

4 Solutions collect form web for “Значение пароля Python md5”

хэш, который вы положили, есть соленый sha1 hexdigest, поскольку django (и, вероятно, многие другие) сохраняет его по умолчанию.

код для проверки его в файле contrib / auth / models.py . Оттуда вы можете видеть, что django работает с md5 по умолчанию. Все, что вам нужно сделать, это обновить старые хэши до следующей формы:

 md5$<salt>$<hash> 

если ваши хеши не соленые, не оставляйте соль пустой ( md5$$<hash> ), но обновите хэш до sha1 в следующий раз, когда пользователь выполнит действительный логин.

Я не думаю, что oldpasswd_db является MD5. Он больше похож на комбинацию хэш-метода (SHA1 в данном случае), соли и сам хэш пароля.

Попробуйте соединить значение соли с паролем:

 import hashlib hashlib.sha1('c60datom').hexdigest() 

Это не md5, это sha1 – "sha1$xxx .

Вместо этого вам придется использовать функции sha1. Существует документация по этому адресу: http://docs.python.org/library/sha.html

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

 import md5 input_password = request.POST['password'] md5_hashed_input_password = md5.new(input_password).hexdigest() #comapre the value to that stored in db if md5_hashed_input_password == db_password: #password in db should be stored in md5 hash format print 'password match' else: print 'password mismatch' 
  • ManyToManyField пуст в функции post_save ()
  • get raise KeyError (key) KeyError: «SECRET_KEY» с django в настройках производительности
  • python формат datetime с "st", "nd", "rd", "th" (английский порядковый суффикс), как PHP "S"
  • Пример модели пользователя Django
  • from django.contrib.gis.geos import GEOSException, GEOSGeometry, fromstr ImportError: невозможно импортировать имя GEOSException
  • Модель не имеет атрибута _committed
  • Обратный модуль Ajax в django для создания системы уведомлений
  • Почему Django продолжает запрашивать типы контента, являются устаревшими и их необходимо удалить
  • Python - лучший язык программирования в мире.