HMAC的详细定义

HMAC是一种使用密钥和哈希函数确保消息完整性的机制。它需要密钥、消息和哈希算法作为输入,如SHA-256或MD5。HMAC通过两步哈希过程生成消息认证码,可用于验证消息是否被篡改。此外,HMAC也可用于密钥衍生。算法中,密钥与特定的填充字节进行异或操作,然后与消息一起进行哈希计算,最后再次异或并哈希以生成最终的HMAC值。HMAC的输出长度取决于所选哈希算法,可以截短以适应不同需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值