我有 2 个需要比较的哈希值。1 个来自 API,其他是我在内部计算的
我知道 2 sha512
可以使用
input1.digest() == input2.digest()
其中两个输入均为 sha512
我的问题是,由于我从 API 获取其中 1 个,因此它的大小为 string
格式和字符串没有 digest
:
*** AttributeError: 'str' object has no attribute 'digest'
我认为这会起作用:
if(calculated_hash != input_hash):
return False
return True
如何为其中一个测试用例在内部生成哈希:
hash_val = sha512(parameters.encode('utf-8') + salt.encode('utf-8')).hexdigest()
但是由于哈希每次都是新的,所以这是行不通的。
如何在给定场景下比较这两个哈希值?
编辑:
输入中存在动态时间戳,因此收到的哈希值与接收到的参数生成的 vc 哈希值存在差异。但是,在比较 hexdigest
时,我仍然得到 False 值。 !! :\
最佳答案
secrets python 中的模块提供了一个函数“compare_digest”,该函数也可用于比较两个“sha”系列哈希函数的摘要和十六进制摘要。这是一个例子。
import hashlib, secrets
data_1 = b'Hello'
sha256_1 = hashlib.sha256(data_1).digest()
data_2 = b'Hello'
sha256_2 = hashlib.sha256(data_2).digest()
data_3 = b'However'
sha256_3 = hashlib.sha256(data_3).digest()
print(secrets.compare_digest(data_1, data_2)) #True
print(secrets.compare_digest(data_1, data_3)) #False
关于python - 比较在 python 中作为输入传递的 2 个 sha512 哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35169093/