2017-09-06 88 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

相關問題