当前位置:   article > 正文

HMAC的简单介绍

hmac

1、概念
HMAC:采用哈希运算得消息认证码(密钥散列消息认证码)。
HMAC有两个功能上不同的参数,一个消息输入和一个只有消息发起者和预期接收者知道的秘密密钥。

2、简介
密码密钥(key):与密码算法一起使用的参数,它决定了该算法的具体操作;
哈希函数:将任意长度的字符串(到预定的最大大小)映射到固定长度的字符串的数学函数;
HMAC:将加密密钥与哈希函数结合使用的消息验证码;
消息验证码(MAC):通过消息验证算法传递数据所产生的加密校验和。
消息认证算法称为HMAC,应用HMAC的结果称为MAC。

3、HMAC参数和符号:
B:块大小,也就是哈希中得分组长度(字节单位);
H:哈希函数;
ipad:内部Pad,固定值0x36,重复B次;
K:发起端与接收端得共享得密钥;
K0:密钥K经过处理后得到B字节长的密钥;
L:哈希算法后生成的摘要长度(字节单位)
opad:外部Pad,固定值0x5c,重复B次;
text:要处理的内容;内容长度为n位,其中0 ≤ n < 2^B - 8B;
||:连接起来
⊕:异或

4、算法过程
1、判断密钥K和B的长度;
K>B,对密钥做哈希处理生成小于大于B长度的摘要,不够B块长即填充0x00。即K0 = (H(K) || 00…00);
K<=B,对密钥做填充0x00到块长度,即K0 = (K || 00…00);
2、对密钥K0与ipad做异或处理操作,即K0 ⊕ ipad;
3、将处理内容接在步骤2的结果后面,即(K0 ⊕ ipad)|| text;
4、对步骤3的结果做哈希运算,即H((K0 ⊕ ipad) || text);
5、对密钥K0与opad做异或处理操作,即K0 ⊕ opad;
6、将步骤4的结果接在步骤5的后面,即(K0 ⊕ opad)||(H((K0 ⊕ ipad) || text));
7、对步骤7的结果做哈希运算,即H((K0 ⊕ opad )|| H((K0 ⊕ ipad) || text))。

总的过程:MAC(text) = HMAC(K, text) = H((K0 ⊕ opad )|| H((K0 ⊕ ipad) || text))

5、图示
在这里插入图片描述

6、其他
对于该功能的实现,可以分成init,update,dofinal散步。init可以运算中处理不变的地方;update可以实现不连续地址内容的处理;dofinal即处理之前累计的结果和当前的内容,生成最终结果。具体可按自己想法自行划分。

最后,欢迎大家一起沟通学习。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号