消息认证码mac和哈希消息认证码hmac

消息认证码mac和哈希消息认证码hmac

标题消息认证码—MAC

背景:

用于解决信息加密传输过程中,密码(这里通常为对称加密)被破解从而导致的信息篡改,即使得消息接收者可以通过消息认证码mac识别出收到的信息是否已经被篡改。

原理:

mac是一种与密钥有关的hash函数,具体步骤:

  1. 接收方和发送方共享一个密钥K
  2. 发送方将明文消息M和密钥K共同作为mac函数的输入,得到一个mac值,称为A,将A和明文消息M共同加密(使用密钥K)得到密文N,发送给接收方
  3. 接收方收到消息N后,先用密钥K进行解密,得到明文M和mac值A,将明文M和密钥K共同输入MAC函数,重新得到一个MAC值称为B
  4. 比较A和B,若A与B相同,则说明消息没有被篡改

消息认证码机制利用的是hash函数的特点,即便密钥被破解,攻击者也只能看到明文M而无法对明文进行修改。若进行修改则无法保持新生成的mac值与原mac值相同

哈希消息认证码—HMAC

HMAC简述:

HMAC是以字节为单位的,任何数据位数都必须被8整除
HMAC中有两个规定好的数分别为ipad=00110110 opad=01011100(不断循环生成一个B字节长的数据)
HMAC算法的实际运算如下: H M A C ( K , M ) = H ( ( K ⊕ o p a d ) ∣ H ( ( K ⊕ i p a d ) ∣ M ) ) HMAC(K,M)=H((K⊕opad)|H((K⊕ipad)|M)) HMAC(K,M)=H((Kopad)H(Kipad)M)
【注】:上式的K是经过处理的,与初始密钥K并不一定相同

算法步骤:

  1. 若密钥K长度大于B,则用H对K进行压缩产生长为B的新密钥K;若密钥K长度小于B,则用0进行填充,形成一个长度为B的新密钥K(要注意经过步骤1后,K与原先的K有区别,为了书写方便,仍将之称为K)
  2. 将K与ipad做异或运算得到ikeypad
  3. 将ikeypad与明文m组合,经过hash函数得到hash sum1
  4. 将K与opad做异或运算得到okeypad
  5. 将okeypad与hash sum1组合,经过hash函数得到hash sum2作为最终结果输出

流程图

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值