Не могу полностью понять, как работает хеширование {python} - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь создать простое программное обеспечение, которое включает в себя пользователя, имеющего пароль.Я подумал, что вместо сохранения пароля в коде в виде текста, возможно, стоит немного узнать о том, как работает хеширование.Затем я попытался использовать библиотеку hashlib для python.Для меня этот код должен видеть, что пароли x и y совпадают, и, следовательно, продолжать гипотетический «вход в систему», но по какой-то причине он не выполняет то, что я хочу.Есть ли синтаксическая ошибка?сопоставление паролей работает по-другому?Мне нужна помощь, чтобы программа сравнила 2 хеша и, следовательно, войдите в систему.

import hashlib

pw1=hashlib.md5(input("please enter your password").encode('utf-8'))
pw2=hashlib.md5(input("please re-enter your password").encode('utf-8'))

if pw1.hexdigest == pw2.hexdigest:
    print("Success. Passwords match")
if pw1.hexdigest != pw2.hexdigest:
    print("Failure. Passwords do not match")

1 Ответ

1 голос
/ 06 марта 2019

Часть hexdigest экземпляра hashlib - это сама функция . Вы должны назвать это:

hex1 = pw1.hexdigest()
hex2 = pw2.hexdigest()

например. Теперь вы можете сравнить две строки hex1 и hex2.

(Как сказал metatoaster в комментарии , не используйте md5.)

Кстати, обратите внимание, что pw1 и pw2 являются экземплярами хэшей: вы можете передать им больше данных. В этом случае это не имеет смысла, но:

pw1.update(b'more data')

изменяет то, что возвращает следующий вызов pw1.hexdigest().

...