Ø H是一个Hash函数
Ø K表示密钥
Ø B表示计算消息摘要时消息分块的字节长度(对MD5和SHA-1是512比特,64字节)
Ø L表示消息摘要按字节计算的长度(对MD5是16字节)
Ø ipad表示0x36重复B次,opad表示0x5c重复B次。
Ø K可以有不超过B字节的任意长度,但一般建议K的长度不小于L。当使用长度大于B的密钥时,先用H对密钥进行杂凑,然后用得出的L字节作为HMAC的真正密钥
计算一个数据“文本”的HMAC的操作如下:
1)在K的后面加上足够的0以得到B字节的串
2)将上一步得到的B字节串与ipad异或
3)将数据流“文本”接在第2步得到的B字节串后面
4)将H应用于上一步的比特串
5)将第1步所得到的B字节串与opad异或
6)将第4步的消息摘要接在第5步的B字节串后
7)应用H于上一步的比特串
认证加密模式
CCM加密认证模式