当我遇到这段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是什么?这只是一条信息的杂凑吗?
发布于 2017-09-20 03:42:33
由于HMAC是为了检查消息的真实性,所以我理解检查HMAC的重要性。
那么,如何验证消息是真实的呢?
当您收到HMAC消息时,它包含两个部分。实际消息和HMAC标签。现在,要验证消息是真实的,需要使用HMAC算法构造一个HMAC标记,其中包含接收到的消息和您拥有的密钥。然后,将生成的HMAC与附带消息的HMAC进行比较,以查看它们是否匹配。
但是为什么我们要比较信息中的HMAC和摘要中的HMAC呢?
来验证消息是否真实,正如上面所解释的那样。
此外,摘要中的HMAC是什么?
您生成的HMAC与消息附带的HMAC进行比较。
https://stackoverflow.com/questions/46311990
复制相似问题