你的位置:pcMing工作室 >> 资讯 >> 专业术语 >> 详细内容 在线投稿

HMAC

排行榜 收藏 打印 发给朋友 举报 来源: 百度百科   发布者:未知
热度134票  浏览4次 【共0条评论】【我要评论 时间:2010年6月18日 10:59
  HMAC即基于散列函数(hash)的消息认证码(MAC)算法。它的主要思想是把hash函数和一个key结合起来,确保既能能够用当前的hash函数又易升级为新的hash函数,并能保持和hash函数一样的安全性,简单并易进行密码学分析。 
  计算HMAC需要一个散列函数hash(可以是md5或者sha-1)和一个密钥key。用L表示hash函数输出字符串长(md5是16),用B表示数据块的长度(md5和sha-1的分割数据块长都是64)。密钥key的长度可以小于等于数据块长B,如果大于数据块长度,可以使用hash函数对key进行转换,结果就是一个L长的key。
  然后创建两个B长的不同字符串:
  innerpad = 长度为B的 0×36 *b/8
  outterpad = 长度为B的 0×5C*b/8
  计算输入字符串M的HMAC:
  HMAC(key,M)=hash[key ^ outterpad, hash[key ^ innerpad, M]]
  hmac主要应用在身份验证中,它的使用方法是这样的:
  1. 客户端发出登录请求(假设是浏览器的GET请求)
  2. 服务器返回一个随机值,并在会话中记录这个随机值
  3. 客户端将该随机值作为密钥,用户密码进行hmac运算,然后提交给服务器
  4. 服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的hmac运算,然后与用户发送的结果比较,如果结果一致则验证用户合法
  在这个过程中,可能遭到安全攻击的是服务器发送的随机值和用户发送的hmac结果,而对于截获了这两个值的黑客而言这两个值是没有意义的,绝无获取用户密码的可能性,随机值的引入使hmac只在当前会话中有效,大大增强了安全性和实用性。大多数的语言都实现了hmac算法,比如php的mhash、python的hmac.py、java的MessageDigest类,在web验证中使用hmac也是可行的,用js进行md5运算的速度也是比较快的。
TAG: HMAC
顶:7 踩:6
对本文中的事件或人物打分:
当前平均分:-0.09 (45次打分)
对本篇资讯内容的质量打分:
当前平均分:0.89 (38次打分)
【已经有38人表态】
5票
感动
5票
路过
3票
高兴
5票
难过
4票
搞笑
5票
愤怒
4票
无聊
7票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源