gpt4 book ai didi

python - 从 pycrypto 和 hashlib 构建 HMAC-SHA-512

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:16 25 4
gpt4 key购买 nike

我正在尝试从旧版本的 pycryptohashlib 构建 HMAC-SHA-512。结果与 RFC4231 中的测试向量不同

到目前为止我的代码:

from hashlib import sha512  # my pycrypto doesn't have SHA
from Crypto.Hash import HMAC
from binascii import a2b_hex

# helper to match HMAC signature
class Sha512:
@staticmethod
def new():
return sha512()

def hmac(hexkey, hexdata):
return HMAC.new(a2b_hex(hexkey), a2b_hex(hexdata), digestmod=Sha512).hexdigest()

hmac("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b", "4869205468657265")
'9656975ee5de55e75f2976ecce9a04501060b9dc22a6eda2eaef638966280182477fe09f080b2bf564649cad42af8607a2bd8d02979df3a980f15e2326a0a22a'

# should be
'87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854'

我是不是哪里出错了?pycrypto 中的 key 是否有不同的语义?

编辑:我在 Python3 和最新的 pycrypto 中也看到了同样的差异。

最佳答案

事实证明,pycrypto 希望在实例化算法之前查看算法的 block 和摘要大小。

这是一个有效的技巧:

class Test:
@staticmethod
def new():
return sha512()
block_size = sha512().block_size
digest_size = sha512().digest_size

此外,旧版本的 pycrypto 不支持更大的 block 大小: https://bugs.launchpad.net/pycrypto/+bug/754806

此外,对于此特定任务来说,pycrypto 并不是真正必要的。 Python 提供了一个 hmac 模块,它可以愉快地接受 hashlib 哈希值。

关于python - 从 pycrypto 和 hashlib 构建 HMAC-SHA-512,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343741/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com