HMAC的详细定义

HMAC= Hash-based Message Authentication Code (MAC code, calculated using a cryptographic hash function):

 

HMAC(key, msg, hash_func) -> hash

HMAC需要三个输入参数,密钥Key,消息内容,Hash算法;(所以HMAC本身并不是一种Hash算法,因而需要调用现成的Hash算法。)

HMAC主要作用是用于产生消息认证码,也就是对一段消息进行Hash,产生消息认证码。接收端可以用消息认证码来验证消息是否被篡改。

HMAC也可以用作KEY的衍生(HMAC-based key derivation

HMAC的Hash算法可以有很多选择,如SHA-256, SHA-512, RIPEMD-160, SHA3-256 ,MD5,SM3等。因此可以表示为:HMAC-SHA1, HMAC-MD5, HMAC-RIPEMD等;

HMAC的输出的长度取决于Hash算法的选择,如下面选择SM3,输出256bits(32字节);但是可以根据需要进行截短;截短的时候是从左到右去找出需要留下的字节或比特数。如HMAC-SHA1-80,表示把SHA1的20个字节输出截断为80bits。

HMAC的详细算法如下(RFC 2104 - HMAC: Keyed-Hashing for Message Authentication):

We define two fixed and different strings ipad and opad as follows (the 'i' and 'o' are mnemonics for inner and outer):

ipad = the byte 0x36 repeated B times

opad = the byte 0x5C repeated B times.

To compute HMAC over the data `text' we perform :

H(K XOR opad, H(K XOR ipad, text))

其中B等于64;

ipad是内层,0x36重复64次,也就是0x363636.....共64字节

opad是外层,0x5c重复64次,0x5c5c5c.....共64字节。

计算时候先是key和ipad异或,结果和待计算的消息内容连接在一起,

然后用Hash算法计算H(K XOR ipad, text)。

然后再用K XOR opad,结果和H(K XOR ipad, text)的结果连接在一起

再调用Hash算法计算H(K XOR opad, H(K XOR ipad, text))。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值