【发布时间】:2013-09-23 22:38:49
【问题描述】:
新手在这里玩散列,但没有得到我想要的结果。尝试从网络上的 txt 文件中获取哈希,然后将该哈希与本地哈希进行比较。
出于测试目的,我使用的是 SHA256.new(“10”).hexdigest(),即:4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5
代码:
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()。
提前感谢您的帮助。
【问题讨论】:
-
我猜
line1末尾有一个换行符,但没有line1的实际值,无法确定。 -
什么是“对每个哈希再进行一次哈希”?如果你 SHA256 是一个 SHA256,你不应该期望它自己返回……如果你的意思是不同的……那你是什么意思?如果您向我们展示演示问题的代码、输入、预期输出和实际输出,则无需将问题描述得那么严格。
-
另外,谁告诉你不应该使用
==来比较哈希?它们是十六进制字符串;否则你会如何比较它们? -
原来我正在阅读一些 old python cmets 而没有意识到。是关于 == 不安全的一段文字...此刻我有点过头了。
-
@abarnert:定时攻击
标签: python hash urllib2 sha256