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

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

3 голосов
/ 25 октября 2010

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

этот старый пароль - формат 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 ]

3 голосов
/ 25 октября 2010

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

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

md5$<salt>$<hash>

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

2 голосов
/ 25 октября 2010

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

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

import hashlib
hashlib.sha1('c60datom').hexdigest()
1 голос
/ 25 октября 2010

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

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

0 голосов
/ 22 марта 2016

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

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...