hashlib.md5() TypeError: Unicode-Objekte codiert werden muß, bevor hashing
Ich bin neu in Codierung und lief in ein problem, versuchen zu codieren eines Strings.
>>> import hashlib
>>> a = hashlib.md5()
>>> a.update('hi')
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
a.update('hi')
TypeError: Unicode-objects must be encoded before hashing
>>> a.digest()
b'\xd4\x1d\x8c\xd9\x8f\x00\xb2\x04\xe9\x80\t\x98\xec\xf8B~'
Ist (a) jetzt als verschlüsselt?
Zweite Frage: Wenn ich den gleichen code von oben in ein script bekomme ich diesen Fehler:
import hashlib
a = hashlib.md5()
a.update('hi')
a.digest()
Traceback (most recent call last):
Datei "C:/Users/User/Desktop/Logger/Encoding practice.py", line 3, in
ein.update('hi')
TypeError: Unicode-Objekte codiert werden muß, bevor hashing
Warum ist der code, der das arbeiten in der shell und nicht das Skript?
Ich arbeite mit Windows und Python 3.4
Dank.
InformationsquelleAutor Shahab | 2014-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da Sie Codierung sind einfache strings, die ich ableiten, dass Sie laufen von Python 3, wo alle strings sind unicode-Objekte sind, haben Sie zwei Optionen:
"Nobody inspects".encode('utf-8')
Verwenden Binär-strings, wie gezeigt, in den Handbüchern:
Den Grund für das abweichende Verhalten in das Skript auf der shell ist, dass das Skript nicht auf die Fehler in der Erwägung, dass in der Schale die Letzte Zeile ist ein Befehl, aber noch nicht das tun, was Sie wollen es, weil die vorherigen Fehler.
InformationsquelleAutor Steve Barnes
Die Lösung, die ich gefunden habe, ist einfach die Daten zu codieren, sofort in die Zeile, wo du bist hashing:
hashlib.sha256("a".encode('utf-8')).hexdigest()
Bei mir hat es geklappt, hoffe es hilft!
InformationsquelleAutor Matej Butković
Unter den verschiedenen Versionen von Python anders ist,ich nutze Python 2.7,wie Sie schreiben, es funktioniert gut.
hashlib.md5(data) - Funktion, die Art der Daten Parameter sollte 'bytes'.Das heißt, wir müssen die Art der Daten in bytes, bevor hashes.
Anforderungen, bevor die hash-code-Konvertierung, weil derselbe string verschiedene Werte unter unterschiedlichen Codierungs-Systemen(utf8\gbk.....), um sicherzustellen, dass das nicht passieren Mehrdeutigkeit hat eine dominante Konvertierung.
InformationsquelleAutor NeoWu
Funktioniert es nicht in der REPL. Es ist gehasht nichts, da Sie bestanden haben, es nichts gültig zu hash. Versuchen Sie, die Codierung der ersten.
InformationsquelleAutor Ignacio Vazquez-Abrams