密码学入门——HMAC

文章目录

    • 一、什么是HMAC
    • 二、HMAC的步骤

一、什么是HMAC

HMAC是一种使用单向散列函数来构造消息认证码的方法(RFC2104),其中 HMAC的H就是Hash的意思。

HMAC 中所使用的单向散列函数并不仅限于一种,任何高强度的单向散列函数都可以被用于HMAC,如果将来设计出新的单向散列函数,也同样可以使用。

使用SHA-1、SHA-224、SHA-256、SHA-384、SHA-512所构造的HMAC,分别称为HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。

二、HMAC的步骤

密码学入门——HMAC_第1张图片
下面是 HMAC 的步骤:

  1. 选择一个适当的哈希函数 H,通常使用 SHA-256、SHA-384 或 SHA-512 等安全的哈希函数。
  2. 确定一个密钥 K,长度可以是任意值。如果密钥长度不足 H 函数的输入块长度,则需要对密钥进行填充。
  3. 对密钥进行预处理。如果密钥长度超过 H 函数的输入块长度,则需要将 K 哈希成 H 函数的输出长度。
  4. 对消息 M 进行填充,使其满足 H 函数的输入块长度要求。
  5. 将处理后的密钥 K 和填充后的消息 M 输入到 HMAC 算法中。
  6. HMAC 算法根据以下公式计算哈希值:
    HMAC(K, M) = H((K ⊕ opad) || H((K ⊕ ipad) || M))
    其中,“||”表示拼接,opad 和 ipad 是固定的填充值,分别为 0x5c 和 0x36。
    输出 HMAC 值作为消息的认证码。

注意,为了提高安全性,每个消息都应该使用不同的密钥。如果多个消息使用相同的密钥,则可能会存在安全隐患。

你可能感兴趣的:(密码学,hmac)