Python - 比较两个哈希的问题

时间:2013-09-23 22:38:50

标签: python hash urllib2 sha256

新手在这里玩哈希并没有得到我想要的结果。尝试从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()。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果我不得不猜测,我会说改变

line1 = source.readline()

line1 = source.readline().strip()

将解决问题。 strip()删除了前导和尾随空格,包括换行符('\n')几乎肯定会在readline读取的第一行的末尾。

您可以使用repr查看是否存在类似“隐身”的字符,这些字符使用转义字符显式呈现它们:

>>> print repr('\t')
'\t'