2014-01-19 7 views
0

Следующий фрагмент представляет основное использование python hashlib.md5 (in py2.7).python hashlib.md5 escape-символы

>>> import hashlib 
>>> m = hashlib.md5() 
>>> m.update('phrase') 
>>> m.digest() 
'8Z\xa58^\x83\xef\xc5\xd8<u\x88\xee_\xb7\xe8' 
>>> type(m.digest()) 
<type 'str'> 

У меня есть два вопроса:

  1. как я могу преобразовать шестнадцатеричное представление в текст читабельной?
  2. В чем причина того, что python не возвращает простой хэш, например 385aa5385e83efc5d83c7588ee5fb7e8? Для чего это экранированное шестнадцатеричное представление?
+1

Вы действительно после 'm.hexdigest()'? Бинарная версия больше подходит для операций с битами и в два раза меньше, чем читаемая человеком версия ... –

+0

Также вы можете вывести ее с помощью встроенной функции repr (полезно, когда у вас проблемы с выходом строки, для пример в шаблоне Jinja2): 'repr (m.digest())' – sergzach

ответ

1

Вы ищете в двоичном представлении хэша дайджеста. То, что вы хотите шестнадцатеричный переваривать, произведенный hash.hexdigest():

>>> import hashlib 
>>> m = hashlib.md5() 
>>> m.update('phrase') 
>>> m.hexdigest() 
'385aa5385e83efc5d83c7588ee5fb7e8' 

Python предоставляет доступ как к исходной двоичной величины и шестнадцатеричное представление.

Смежные вопросы