Мне нужна помощь в понимании хеширования md5 для python 3.4.3

Я просто тестирую хеширование md5 в питоне 3.4.3. И я не понимаю, какие результаты я получаю. Я пытаюсь сравнить хешированный пароль в моей базе данных sql, но каждый раз, когда я пытаюсь это сделать, я получаю другой результат. Вот код, который я создал, чтобы проиллюстрировать мою проблему:

import hashlib

x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
p = '5'
for i in x:

    k = hashlib.md5(p.encode('utf-8'))
    print(k)

Результаты:

<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>
<md5 HASH object @ 0x02A07CF0>
<md5 HASH object @ 0x02A07B10>

1 ответ

Решение

Ваш вывод печатает адреса HASH объект, а не сам дайджест MD5.

Если вы хотите увидеть это, то позвоните digest() на этом объекте. Это вернет 128-битный вывод MD5 в виде 16-байтовой строки. Если вы хотите распечатать его в шестнадцатеричном формате, используйте hexdigest() вместо:

k = hashlib.md5(p.encode('utf-8')).hexdigest()
Другие вопросы по тегам