Python 不会接受两个相同的字符串
Python won't accept two same strings as the same
我是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
我真的没看懂问题
readlines()
returns 行末尾有换行符。您正在比较 "A" 和 "A\n"。试试这个:
if userhash.strip() == hexdigest
问题出在这一行:
lines = hlist.readlines()
此列表中的每个值都有一个尾随换行符(您在 print
ing 时可能不会注意到)。确保 strip
关闭。
userhash = lines[0].strip()
当您使用 readlines()
时,您会得到每行末尾带有换行符的行列表,您可以执行以下两个选项之一:
选项#1:
lines = hlist.readlines()
userhash = lines[0].rstrip()
选项#2:
lines = hlist.read().splitlines()
userhash = lines[0]
我是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
我真的没看懂问题
readlines()
returns 行末尾有换行符。您正在比较 "A" 和 "A\n"。试试这个:
if userhash.strip() == hexdigest
问题出在这一行:
lines = hlist.readlines()
此列表中的每个值都有一个尾随换行符(您在 print
ing 时可能不会注意到)。确保 strip
关闭。
userhash = lines[0].strip()
当您使用 readlines()
时,您会得到每行末尾带有换行符的行列表,您可以执行以下两个选项之一:
选项#1:
lines = hlist.readlines()
userhash = lines[0].rstrip()
选项#2:
lines = hlist.read().splitlines()
userhash = lines[0]