hmac

HMAC是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。hmac主要应用在身份验证中.

标准hmac过程

标准hmac过程

算法公式

HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))

  • H 代表所采用的HASH算法(如SHA-256)
  • K 代表认证密码
  • Ko 代表HASH算法的密文
  • M 代表一个消息输入
  • B 代表H中所处理的块大小,这个大小是处理块大小,而不是输出hash的大小

    如,SHA-1和SHA-256 B = 64 SHA-384和SHA-512 B = 128

  • L 表示hash的大小
  • Opad 用0x5c重复B次
  • Ipad 用0x36重复B次
  • Apad 用0x878FE1F3重复(L/4)次

HMAC运算步骤

First-Hash = H(Ko XOR Ipad || (data to auth))
Second-Hash = H(Ko XOR Opad || First-Hash)
  1. 在密钥K后面添加0来创建一个字长为B的字符串。(例如,如果K的字长是20字节,B=64字节,则K后会加入44个零字节0x00)
  2. 将上一步生成的B字长的字符串与ipad做异或运算。
  3. 将数据流text填充至第二步的结果字符串中。
  4. 用H作用于第三步生成的数据流。
  5. 将第一步生成的B字长字符串与opad做异或运算。
  6. 再将第四步的结果填充进第五步的结果中。
  7. 用H作用于第六步生成的数据流,输出最终结果

results matching ""

    No results matching ""