Seite 1 von 1

Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 19:02
von MalcolmYoung
Warum bekomme ich hier:

Code: Alles auswählen

print(hashlib.md5("hallo"))
immer das:

Code: Alles auswählen

TypeError: Unicode-objects must be encoded before hashing

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 19:15
von Hyperion
Naja, die Fehlerbeschreibung ist doch fast selbsterklärend. Du benutzt Python 3.x, richtig?

Dort sind Strings Unicode-Objekte. hashlib kann aber nur mit Bytes umgehen. Also musst Du einfach den String encodieren:

Code: Alles auswählen

>>> text = "Hallo".encode("utf-8")
>>> type(text)
<class 'bytes'>
Dann sollte es klappen.

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 19:51
von MalcolmYoung
Ja, danke

aber jetzt hab ich folgendes als ausgabe:
<md5 HASH object @ 01D4BC00>


wie bekomm ich NUR den hashwert

Außerdem kann das gar nicht der hashwert sein

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 20:14
von Hyperion
Schaust Du auch mal in die Doku richtig rein? Da steht es doch:
http://docs.python.org/py3k/library/hashlib.html

Anscheinend kann man String-Literale auch direkt codiert als Bytes angeben - war mir neu, da ich bisher kaum mit Python gearbeitet habe.

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 20:21
von MalcolmYoung
Hyperion hat geschrieben:Schaust Du auch mal in die Doku richtig rein? Da steht es doch:
http://docs.python.org/py3k/library/hashlib.html

Anscheinend kann man String-Literale auch direkt codiert als Bytes angeben - war mir neu, da ich bisher kaum mit Python gearbeitet habe.

Also normal versteh ich die Doku ja...

Aber da blick ich echt net durch???



:?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?:

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 20:55
von Jerry

Code: Alles auswählen

>>> import hashlib
>>> hashlib.md5(b'Im ersten Beispiel steht wie es funktioniert').digest()
b"\x90\x97'\x82\xd7\xbe\xae\xda\xfd)\xb4\x9ep\xc1\xf4\x92"
>>> hashlib.md5(b'Im zweiten Beispiel steht wie es funktioniert').hexdigest()
'90972782d7beaedafd29b49e70c1f492'
Gruß, Dennis

Re: Warum immer Fehler bei MD5

Verfasst: Samstag 30. Oktober 2010, 22:41
von Hyperion
MalcolmYoung hat geschrieben: Also normal versteh ich die Doku ja...

Aber da blick ich echt net durch???
Da kann ich nicht helfen - imho ist das große Beispiel alleine schon selbsterklärend... Jerry hat dieses letztlich nur leicht modifiziert hier gepostet. Das kann Dir folglich auch nicht helfen ;-)