【发布时间】:2019-08-23 00:47:51
【问题描述】:
我四处寻找,找不到答案。我注意到我可以使用blake2b 算法生成消息摘要,例如使用hashlib 库或hmac 库,它使用hashlib 指示的digestmod。所以:
plainMsg = "this is a plaintext message"
hashlib_hashed = hashlib.blake2b(key=b'super secret key')
hashlib_hashed.update(plainMsg.encode())
hmac_hashed = hmac.new(b'super secret key', digestmod=hashlib.blake2b)
hmac_hashed.update(plainMsg.encode())
print(hashlib_hashed.hexdigest())
print(hmac_hashed.hexdigest())
在我看来,它们应该生成与我使用相同算法、相同密钥和相同明文的相同消息摘要。但它们会生成两种不同的摘要:
ec0d0ab13d7e7f3b62d742aa92078a4a14346ee6ee352e27c8814e4bf6361556fdc3d301e100b5a2c90c5596c4b2bb72c887c6b6aa92fb41752f6b52105ce13b
b632045e745550e5b9da6d411c013c978cb8120847260eb8fda9c8885368a5eaba80cd74ad95a51b1a4bde1f47cccb5a2e4591e9935126f673479c7474c2be97
我最初认为它与盐有关,因为我没有在hashlib.blake2b() 中使用盐,所以我猜它是空的,因为salt=b''。但是使用hmac 我没有找到如何设置盐。那么,谁能解释一下?
【问题讨论】:
标签: python hmac digest hashlib