当我遇到这段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是什么?它只是消息的哈希值吗?
答案 0 :(得分:1)
由于HMAC要检查消息的真实性,我理解它 检查HMAC非常重要
那么如何验证邮件是否真实?
当您收到HMAC消息时,它包含两部分。实际消息和HMAC标记。现在要验证消息是否可信,您需要构建一个HMAC标记,其中包含已收到的消息以及使用HMAC算法的秘密MAC密钥。然后,将生成的HMAC与出现的HMAC进行比较,看看它们是否匹配。
但是为什么我们要比较来自消息的HMAC和来自的HMAC 摘要。
如上所述验证邮件是否真实。
此外,摘要中的HMAC是什么?
您生成的HMAC与消息附带的HMAC进行比较。