转: MAC认证码的说明
2024-09-27 07:38:02
转: 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组成的字符串;⊕表示异或运算,∣表示连接操作。
最新文章
- SQL Server 2008 R2——当前日期下,一年前数据的统计值
- C#软件设计——小话设计模式原则之:接口隔离原则ISP
- 一款好用且免费的语句分析工具Plan Explorer
- android发送/接收json数据
- Mysql中的各种timeout
- Leetcode: Palindrome Pairs
- springcloud(三):服务提供与调用
- HDU 1002 A + B Problem II(高精度加法(C++/Java))
- React Native图片缓存解决方案
- 图像三维灰度分布图——matlab
- P3150 pb的游戏(1)
- Essential Netty in Action 《Netty 实战(精髓)》读书笔记一
- BZOJ.3720.Gty的妹子树(树分块)
- React Router 用法
- 2. apache整合tomcat部署集群
- ActiveReports 报表控件V12新特性 -- 可定制的安装设置
- EventProxy流程控制
- linux面试总结
- cocos2d::CCFileUtils::sharedFileUtils()->;getFileData(szFile, ";r";, &;bufferSize) 不同平台返回值不一样
- webform CustomValidator