我如何使用 sha-512 生成 hmac?

How do i generate an hmac with sha-512?

所以,我正在写一个 python 程序,实际上是我的第一个 "big" 程序,在某个时候,需要从消息和一把钥匙。

假设我有:

key = 'ff'
seed = '238973:a665f3e641d9a402df3f9d5d9a236cb8061a2437ee47de8b3c8091774484b8b3:238973'
bkey = key.encode()
bseed = seed.encode()
string = hmac.new(bKey, bSeed, 'sha3_512')
digest = string.hexdigest()
print(str(digest))
>>>92b6c5ccc654c21838cb72e932de0feaf898398300e9755b2c91553c9db0bea99a5139055b5471142b299361c6ece4b51f2f26777a6f18f0db27775625e6948f

然而,当我转到 https://www.freeformatter.com/hmac-generator.html#ad-output 时,它给了我另一个结果:

249667dabafbd3fa123b9749c6b23bc90c935e30e1372f26bbab2defa791fc915d60d406efe1b165befd4a1b6dc34fcf2f0975db08a7a2938964e99ea0419dcf

我知道一个事实是正确的,有人可以解释一下这是为什么吗?我已经在网上搜索了几个小时,但似乎我在兜圈子 运行 或者我没有完全理解 hmac 的工作原理。 非常感谢您的帮助,这是我完成此程序所缺少的唯一一点。

sha3_512sha512 的实现不同——第一个是基于 SHA-3, while the second is based on the older SHA-2 standard。在创建 hmac 以使用 SHA-2 版本时,请改用 sha512

>>> hmac.new(b'ff', b'238973:a665f3e641d9a402df3f9d5d9a236cb8061a2437ee47de8b3c8091774484b8b3:238973', hashlib.sha512).hexdigest()
'249667dabafbd3fa123b9749c6b23bc90c935e30e1372f26bbab2defa791fc915d60d406efe1b165befd4a1b6dc34fcf2f0975db08a7a2938964e99ea0419dcf'