HMAC 算法原理

一、什么是 HMAC

HMAC 算法是一种基于密钥的报文完整性的验证方法 ,其安全性是建立在 Hash 加密算法基础上的。它要求通信双方共享密钥、约定算法、对报文进行 Hash 运算,形成固定长度的认证码。通信双方通过认证码的校验来确定报文的合法性。 

HMAC 算法可以用来作数字签名、报文验证等 。(我感觉实际情况中用 HMAC 做加密也是为的不可逆加密,不像用 DES / AES 这种可逆加密;感觉 HMAC 和随机盐 Hash 算法非常像)

一句话总结:HMAC 是密钥相关的哈希运算消息认证码(Hash-based Message Authentication Code),HMAC运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。

二、HMAC算法的定义

HMAC 算法是一种执行“校验和”的算法,它通过对数据进行“校验”来检查数据是否被更改了。在发送数据以前,HMAC 算法对数据块和双方约定的公钥进行“散列操作”,以生成称为“摘要”的东西,附加在待发送的数据块中。当数据和摘要到达其目的地时,就使用 HMAC 算法来生成另一个校验和,如果两个数字相匹配,那么数据未被做任何篡改。否则,就意味着数据在传输或存储过程中被某些居心叵测的人作了手脚。

HMAC 算法的定义用公式表示如下:

HMAC(K,M) = H( (K⊕opad) | H( (K⊕ipad) | M) )
  • ipad 为 0x36 重复 B(SHA_BLOCKSIZE) 次
  • opad 为 0x5c 重复 B(SHA_BLOCKSIZE) 次

HMAC算法的加密步骤

1、在密钥 K 后面添加 0 或者对密钥 K 用 H 进行处理来创建一个字长为 B 的字符串。

(例如,如果 K 的字长是 20 字节,B=64 字节,则 K 后会加入 44 个零字节 0x00;如果 K 的字长是 120 字节,B=64 字节,则会用 H 作用于 K 后产生 64 字节的字符串)

2、将上一步生成的 B 字长的字符串与 ipad 做异或运算。

3、将数据流 text(待签名的数据) 填充至第二步的结果字符串中。

4、用 H 作用于第 3 步生成的数据流。

5、将第一步生成的 B 字长字符串与 opad 做异或运算。

6、再将第 4 步的结果填充进第五步的结果中。

7、用 H 作用于第 6 步生成的数据流,输出最终结果 。

用图表示就是:

转载:HMAC算法原理 - 蒹葭苍苍呀 - 博客园

(SAW:Game Over!) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值