【问题标题】:Hmac in message vs HMac in digest消息中的 Hmac 与摘要中的 HMac
【发布时间】:2018-02-28 22:05:57
【问题描述】:

当我遇到这段 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 是什么?它只是消息的哈希值吗?

【问题讨论】:

    标签: python cryptography hmac digest


    【解决方案1】:

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

    那么你如何验证消息是真实的?

    当您收到 HMAC 消息时,它包含两个部分。实际消息和 HMAC 标签。现在要验证消息是否真实,您需要使用收到的消息和使用 HMAC 算法的 MAC 密钥构建一个 HMAC 标签。然后将生成的 HMAC 与消息随附的 HMAC 进行比较,以查看它们是否匹配。

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

    如上所述,验证消息是否真实。

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

    您生成的 HMAC 用于与消息随附的 HMAC 进行比较。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-23
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 2023-03-07
      • 2020-09-06
      • 2018-08-06
      相关资源
      最近更新 更多