python - 比较在 python 中作为输入传递的 2 个 sha512 哈希值

标签 python hash comparison sha512

我有 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/

相关文章:

python - PyQt 自动完成 QlineEdit 不显示列表项

python - virtualenv 和 CLI 工具

javascript - 使用 Javascript XMLHttpRequest 的摘要认证

不同键但相同哈希码的java HashMap 行为

Python方式进行crc32b

javascript - 如何制作更短且可读的比较/逻辑线来分配默认值?在 jQuery/JavaScript 中?

assembly - 汇编零和等于之间的区别

python - PyInstaller 找不到 PyYAML 隐藏导入

python - 模拟具有特定返回值的实例方法?

c - 如何检查单词a中单词b中的所有字符(C语言)?