2017-09-06 83 views
1

我相当初来乍到Python和我被困在以下情况:Python将不接受两个同样的字符串相同

我想哈希密码并将其与masterhash比较。不幸的是,Python不接受他们成为一样的:

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" 

我已经检查了objectypes:两个字符串

哈希,这两个时间:

c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

我真的不明白这个问题。

+0

是c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec – loekarbona

回答

1

的问题是这一行:

lines = hlist.readlines() 

在这个列表中的每个值将有一个结尾的新行(这时候print荷兰国际集团您可能没有注意到)。确保你strip关闭。

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

非常感谢你 – loekarbona

0

readlines()返回带有换行符的行。你正在比较“A”和“A \ n”。试试这个:

if userhash.strip() == hexdigest 
+0

非常感谢你 – loekarbona

0

当您使用readlines()你在每个行的末尾新行字符的行的列表,你可以做的两个选项之一:

选项#1:

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

选项#2:

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

非常感谢你 – loekarbona

相关问题