2017-09-06 2 views
1

Ich bin ziemlich ein Neuling in Python, und ich bin in der folgenden Situation stecken:Python wird nicht akzeptieren zwei gleiche Strings wie die gleichen

Ich mag ein Passwort Hash und mit dem masterhash zu vergleichen. Leider ist Python nicht als die gleiche akzeptieren:

import hashlib 
h=hashlib.sha512() 
username='admin' 
username=username.encode('utf-8') 
h.update(username) 
hexdigest=h.hexdigest() 
hlist=open("database.txt")#masterhash 
lines=hlist.readlines() 
userhash=lines[0]#masterhash in line 0 
if userhash == hexdigest: # it doesent accept them as the same 
     text = "True" 
else: 
     text="False" 

Ich habe bereits die objectypes: beide String

Der Hash, beide Male:

c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

I verstehe das Problem wirklich nicht.

+0

ja c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec – loekarbona

Antwort

1

Das Problem ist, diese Zeile:

lines = hlist.readlines() 

Jeder Wert in dieser Liste wird ein Newline haben (die Sie nicht bemerken können, wenn print ing). Stellen Sie sicher, dass Sie strip das aus.

userhash = lines[0].strip() 
+0

danke sehr viel – loekarbona

0

readlines() gibt Zeilen mit Zeilenumbrüchen an ihren Enden zurück. Sie vergleichen "A" mit "A \ n". Versuchen Sie folgendes:

if userhash.strip() == hexdigest 
+0

vielen Dank – loekarbona

0

Wenn Sie readlines() Sie am Ende jeder Zeile eine Liste der Linien mit der neuen Linie Charakter erhalten, können Sie eine von zwei Optionen tun:

Option # 1:

lines = hlist.readlines() 
userhash = lines[0].rstrip() 

Option # 2:

lines = hlist.read().splitlines() 
userhash = lines[0] 
+0

danke sehr viel – loekarbona

Verwandte Themen