Python不会接受两个相同的字符串

时间:2017-09-06 14:14:55

标签: python string python-3.x comparison string-comparison

我是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"

我已经检查了对象类型:两个字符串

哈希,两次:

  

c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec

我真的不明白这个问题。

3 个答案:

答案 0 :(得分:1)

问题在于这一行:

lines = hlist.readlines()

此列表中的每个值都有一个尾随换行符(print时可能没有注意到)。确保你strip关闭。

userhash = lines[0].strip()

答案 1 :(得分:0)

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

if userhash.strip() == hexdigest

答案 2 :(得分:0)

当您使用readlines()时,您会获得每行末尾带有新行字符的行列表,您可以选择以下两种方法之一:

选项#1:

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

选项#2:

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