转: http://blog.sina.com.cn/s/blog_4940e1fc01012vk3.html

MAC(Message Authentication Code)

消息认证码(带密钥的Hash函数):密码学中,通信实体双方使用的一种验证机制,保证消息数据完整性的一种工具。构造方法由M.Bellare提出,安全性依赖于Hash函数,故也称带密钥的Hash函数。消息认证码是基于密钥和消息摘要所获得的一个值,可用于数据源发认证和完整性校验。
        在发送数据之前,发送方首先使用通信双方协商好的散列函数计算其摘要值。在双方共享的会话密钥作用下,由摘要值获得消息验证码。之后,它和数据一起被发送。接收方收到报文后,首先利用会话密钥还原摘要值,同时利用散列函数在本地计算所收到数据的摘要值,同时利用散列函数在本地计算所收到数据的摘要值,并将这两个数据进行比对。若两者相等,则报文通过认证。

 

  消息验证码有两种计算方式,一种是利用已有的加密算法,如DES等直接对摘要值进行加密处理;另一种是使用专门的MAC算法。目前,信息安全领域普遍认同的算法是HMAC,它基于MD5或者SHA-1,在计算散列值时将密钥和数据同时作为输入,并采用了二次散列迭代的方式,实际计算方法如下:

 

  HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))

 

  其中K是密钥,长度应为64字节,若小于该长度,则自动在密钥后面用“0”填充补足。M是消息;H是散列函数;opad和Ipad分别是由若干个0x5c和0x36组成的字符串;⊕表示异或运算,∣表示连接操作。

最新文章

  1. SQL Server 2008 R2——当前日期下,一年前数据的统计值
  2. C#软件设计——小话设计模式原则之:接口隔离原则ISP
  3. 一款好用且免费的语句分析工具Plan Explorer
  4. android发送/接收json数据
  5. Mysql中的各种timeout
  6. Leetcode: Palindrome Pairs
  7. springcloud(三):服务提供与调用
  8. HDU 1002 A + B Problem II(高精度加法(C++/Java))
  9. React Native图片缓存解决方案
  10. 图像三维灰度分布图——matlab
  11. P3150 pb的游戏(1)
  12. Essential Netty in Action 《Netty 实战(精髓)》读书笔记一
  13. BZOJ.3720.Gty的妹子树(树分块)
  14. React Router 用法
  15. 2. apache整合tomcat部署集群
  16. ActiveReports 报表控件V12新特性 -- 可定制的安装设置
  17. EventProxy流程控制
  18. linux面试总结
  19. cocos2d::CCFileUtils::sharedFileUtils()->getFileData(szFile, "r", &bufferSize) 不同平台返回值不一样
  20. webform CustomValidator

热门文章

  1. 解读socketserver之Tcpserver
  2. PHP 笔记——文件引用
  3. BZOJ 3238 [Ahoi2013]差异(后缀自动机)
  4. loj6300 「CodePlus 2018 3 月赛」博弈论与概率统计
  5. [POI2015]Wilcze doły
  6. PHP运行时强制显示出错信息
  7. 关于List Map Set的线程安全的问题
  8. phpcms功能列表
  9. The YubiKey NEO
  10. 关于TFS2010 远程无法创建团队项目的若干问题总结