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即处理之前累计的结果和当前的内容,生成最终结果。具体可按自己想法自行划分。

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值