新手在这里玩哈希并没有得到我想要的结果。尝试从Web上的txt文件中获取哈希值,然后将该哈希值与本地哈希值进行比较。
出于测试目的,我使用SHA256.new(“10”)。hexdigest(),即:4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5
CODE:
import urllib2
from Crypto.Hash import SHA256
source = urllib2.urlopen("<xxURLxx>")
line1 = source.readline() # get first line of the txt file in source which is the hash
localHash = SHA256.new("10").hexdigest()
if localHash == line1: # I know, shouldnt use == to compare hashes but it is my first try.
print("it works!")
else:
print("it does not work...")
打印我从Web文件获取的哈希值和本地哈希值,它们返回相同的字符。但是如果我再次散列每个哈希值,我会得到不同的结果。
有什么想法吗?
看看S.O.并发现: Compare result from hexdigest() to a string 但问题是我没有.digest()。
提前感谢您的帮助。
答案 0 :(得分:1)
如果我不得不猜测,我会说改变
line1 = source.readline()
到
line1 = source.readline().strip()
将解决问题。 strip()
删除了前导和尾随空格,包括换行符('\n'
)几乎肯定会在readline
读取的第一行的末尾。
您可以使用repr
查看是否存在类似“隐身”的字符,这些字符使用转义字符显式呈现它们:
>>> print repr('\t')
'\t'