消息中的Hmac与摘要中的HMac

时间:2017-09-20 01:40:24

标签: python cryptography hmac digest

当我遇到这段Python代码时,我正在学习密码学的基础

if self.shared_hash != None:
            h = HMAC.new(self.shared_hash)
            hmac = data[:h.digest_size*2] #Get the HMAC part of the message
            data = data[h.digest_size*2:] # Get the data part of the message
            h.update(data)
            if h.hexdigest() != str(hmac, 'ascii'): #HMAC is not right, so raise an error
                if self.verbose:
                    print("Bad message")
                    print("HMAC from message:",str(hmac,'ascii'))
                    print("HMAC from digest:",h.hexdigest())
                    print("Not verifying message:",data)
raise RuntimeError("Bad message: HMAC does not match")

由于HMAC要检查消息的真实性,我理解检查HMAC的重要性。但是为什么我们要比较消息中的HMAC和摘要中的HMAC。而且,摘要中的HMAC是什么?它只是消息的哈希值吗?

1 个答案:

答案 0 :(得分:1)

  

由于HMAC要检查消息的真实性,我理解它   检查HMAC非常重要

那么如何验证邮件是否真实?

当您收到HMAC消息时,它包含两部分。实际消息和HMAC标记。现在要验证消息是否可信,您需要构建一个HMAC标记,其中包含已收到的消息以及使用HMAC算法的秘密MAC密钥。然后,将生成的HMAC与出现的HMAC进行比较,看看它们是否匹配。

  

但是为什么我们要比较来自消息的HMAC和来自的HMAC   摘要。

如上所述验证邮件是否真实。

  

此外,摘要中的HMAC是什么?

您生成的HMAC与消息附带的HMAC进行比较。