2016-11-03 6 views
0

Ich möchte einen Hash meines Passworts (b'¥_ÆMÐ1;2±*öªÝ=') mit einem Hash von dem, was der Benutzer eingegeben hat, mit (str)(hashlib.md5(pw.encode('utf-8')).hexdigest()) vergleichen. Wenn ich beide drucke, kommen sie verschiedene heraus. b'¥_ÆMÐ1;2±*öªÝ=' und die andere b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd='. Aus diesem Grund kann ich diese beiden Strings nicht vergleichen. Ich bin auf der Suche nach einer Funktion, die logisch b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd=' in b'¥_ÆMÐ1;2±*öªÝ=' konvertieren kann (jeder der Escape-Codes zu seinem Unicode-Gegenstück). Danke im Voraus. BTW der Hash ist ein Hash von "Lenny", wenn dies hilft. Here ist ein Link zu meinem Code. Das ist mein Ausgang:Vergleichen von Python Hashes

Welcome to The Vault  
Type your username: 
lenny (input not relevant) 
b'¥_ÆMÐ1;2±*öªÝ=' 
b"b'\\xa5\\x83_\\xc6\\x85M\\xd01;2\\xb1*\\xf6\\xaa\\xdd='"
+3

bitte richtig, die Frage zu formatieren. – BernardoGO

+0

'b '¥ _ÆMÐ1; 2 ± * öªª ='' ist kein legales 'bytes'-Objekt. 'bytes' Objekte verwenden' \ x' Escape-Zeichen für alles außer druckbare ASCII beim Anzeigen. Was Sie haben, sieht aus wie eine schreckliche Umwandlung eines 'str' in etwas, das wie' Bytes' aussieht, aber nicht ist. – ShadowRanger

+0

Etwas scheint falsch zu sein ... wenn du '' ¥ _ÆMÐ1; 2 ± * öªª = ''in' utf-8' codierst, bekommst du 'b' \ xc2 \ xa5_ \ xc3 \ x86M \ xc3 \ x901; 2 \ xc2 \ xb1 * \ xc3 \ xb6 \ xc2 \ xaa \ xc3 \ x9d = ''Das ist nicht dasselbe wie' b' \ xa5 \ x83_ \ xc6 \ x85M \ xd01; 2 \ xb1 * \ xf6 \ xaa \ xdd = ' ' – danidee

Antwort

0

Verwenden .digest() statt .hexdigest(), wenn Sie das rohe Bytes aus dem Hash-Kontext mögen.

bearbeiten, Zeile 14 von Ihrem Pastebin sollte sein:

if hashlib.md5(lol.encode('utf-8')).digest() == b'\xa5\x83_\xc6\x85M\xd01;2\xb1*\xf6\xaa\xdd=': 
+0

Als eine Randnotiz, ist es wahrscheinlich auch am besten, nicht md5 (oder eine andere Hash-Funktion für diese Angelegenheit) zum Speichern von Passwörtern für alles, was zählt. Verwenden Sie stattdessen eine Schlüsselableitungsfunktion wie pbkdf2. – KingRadical

+0

Können Sie mir bitte die Zeile geben, die Sie geändert haben? –

+0

Dies ist nur ein Nebenprojekt zum Erlernen von Hash-Passwörtern, also ist MD5 in Ordnung. Danke für die Info, obwohl? –