信息摘要算法:HMAC算法分析
1、HMAC概述
HMAC算法首先它是基于信息摘要算法的。目前主要集合了MD和SHA两大系列消息摘要算法。其中MD系列的算法有HmacMD2、HmacMD4、HmacMD5三种算法;SHA系列的算法有HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512五种算法。
HMAC算法除了需要信息摘要算法外,还需要一个密钥。HMAC的密钥可以是任何长度,如果密钥的长度超过了摘要算法信息分组的长度,则首先使用摘要算法计算密钥的摘要作为新的密钥。一般不建议使用太短的密钥,因为密钥的长度与安全强度是相关的。通常选取密钥长度不小于所选用摘要算法输出的信息摘要的长度。
2、HMAC算法分析
HMAC算法本身并不复杂,起需要有一个哈希函数,我们记为H。同时还需要有一个密钥,我们记为K。每种信息摘要函数都对信息进行分组,每个信息块的长度是固定的,我们记为B(如:SHA1为512位,即64字节)。每种信息摘要算法都会输出一个固定长度的信息摘要,我们将信息摘要的长度记为L(如MD5为16字节,SHA-1为20个字节)。正如前面所述,K的长度理论上是任意的,一般为了安全强度考虑,选取不小于L的长度。
HMAC算法其实就是利用密钥和明文进行两轮哈希运算,以公式可以表示如下:
HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M)),其中:
Ipad为0x36重复B次
Opad为0x5c重复B次
M 代表一个消息输入
根据上面的算法表示公式,我们可以描述HMAC算法的运算步骤:
(1)、检查密钥K的长度。如果K的长度大于B则先使用摘要算法计算出一个长度为L的新密钥。如果后K的长度小于B,则在其后面追加0来使其长度达到B。
(2)、将上一步生成的B字长的密钥字符串与ipad做异或运算。
(3)、将需要处理的数据流text填充至第二步的结果字符串中。
(4)、使用哈希函数H计算上一步中生成的数据流的信息摘要值。
(5)、将第一步生成的B字长密钥字符串与opad做异或运算。
(6)、再将第四步得到的结果填充到第五步的结果之后。
(7)、使用哈希函数H计算上一步中生成的数据流的信息摘要值,输出结果就是最终的HMAC值。
由上述描述过程,我们知道HMAC算法的计算过程实际是对原文做了两次类似于加盐处理的哈希过程。
HMAC的应用
hmac主要应用在身份验证中,它的使用方法是这样的:
(1) 客户端发出登录请求(假设是浏览器的GET请求)
(2) 服务器返回一个随机值,并在会话中记录这个随机值
(3) 客户端将该随机值作为密钥,用户密码进行hmac运算,然后提交给服务器
(4) 服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的hmac运算,然后与用户发送的结果比较,如果结果一致则验证用户合法
在这个过程中,可能遭到安全攻击的是服务器发送的随机值和用户发送的hmac结果,而对于截获了这两个值的黑客而言这两个值是没有意义的,绝无获取用户密码的可能性,随机值的引入使hmac只在当前会话中有效,大大增强了安全性和实用性。大多数的语言都实现了hmac算法,比如php的mhash、python的hmac.py、java的MessageDigest类,在web验证中使用hmac也是可行的,用js进行md5运算的速度也是比较快的。
信息摘要算法:HMAC算法分析相关推荐
- 信息摘要算法之一:MD5算法解析及实现
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已有MD5实现. ...
- 分布式服务器框架之Servers.Core库实现 DES对称加密算法;SHA1信息摘要算法;MD5信息摘要算法
1 介绍 1.1 DES对称加密算法介绍 对称加密算法 通信双方(通信主体)同时掌握一个钥匙,加解密都由这一个钥匙完成.通信双方通信前共同拟定一个密钥,不向第三方公开,发送前加密和接受后解密都由此密钥 ...
- 密码学 MD5信息摘要算法
一.简介 MD5信息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确 ...
- 加密解密、信息摘要算法收集
MD5算法研究 综述 md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa ...
- MD5信息摘要算法详解
MD5信息摘要算法详解 文章目录 MD5信息摘要算法详解 01 MD5概要 02 MD5特性 03 MD5应用 04 MD5实现算法 05 MD5在线网站 01 MD5概要 MD5信息摘要算法,一种被 ...
- 简述MD5信息摘要算法
在之前的文章中,我们聊了不少的加密算法,今天我们聊一种被广泛使用的密码散列函数--MD5. MD5又叫MD5信息摘要算法,经常用于确保信息传输的完整性和一致性 .从严格意义上来说,MD5并不是加密算法 ...
- 信息摘要算法之六:HKDF算法分析与实现
HKDF是一种特定的键衍生函数(KDF),即初始键控材料的功能,KDF从其中派生出一个或多个密码强大的密钥.在此我们想要描述的是基于HMAC的HKDF. 1.HKDF概述 密钥派生函数(KDF)是密码 ...
- 信息摘要算法之四:SHA512算法分析与实现
前面一篇中我们分析了SHA256的原理,并且实现了该算法,在这一篇中我们将进一步分析SHA512并实现之. 1.SHA简述 尽管在前面的篇章中我们介绍过SHA算法,但出于阐述的完整性我依然要简单的说明 ...
- 信息摘要算法之三:SHA256算法分析与实现
前面一篇中我们分析了SHA的原理,并且以SHA1为例实现了相关的算法,在这一片中我们将进一步分析SHA2并实现之. 1.SHA简述 前面的篇章中我们已经说明过,SHA实际包括有一系列算法,分别是SHA ...
最新文章
- 不同版本gene ID比较
- Android onPause()和onStop()区别
- poj2586(贪心盈亏问题)
- android中如何实现UI的实时更新---需要考虑电量和流量
- POI异步导入Excel兼容xsl和xlsx
- 全球及中国有色金属行业产量规模与未来发展形势展望报告2021版
- OA工作流程怎么梳理
- 【机器学习】三层神经网络
- 兰州交通大学开除患癌教师符合理性
- xmemcached spring 配置文件
- 前端学习(1847)vue之电商管理系统电商系统的功能划分
- 来自朋友最近阿里、腾讯、美团等P7岗位面试题
- 第 8 天 多线程与多进程
- JSONP跨域请求原理解析
- Python字符串地常规操作:取值,切片,查找,替换,分割,拼接,转义
- Win10 设置系统还原点
- 27个最佳Beaver Builder主题和模板(2020)
- 谁说前端不能搞红黑树,用这55张图拿JS一起手撕红黑树
- 如何用Python画一只兔子——turtle库circle()画圆函数的详细用法介绍
- vue中使用rem布局
热门文章
- html页面控制台输出,浏览器javascript输出控制台在哪?
- NVIDIA开源Linux GPU内核驱动
- 简单实现在线更新系统
- 大卫 异星觉醒 机器人_异星觉醒有第二部吗揭晓 大结局剧情反转让人措手不及...
- 圖像及編程常用網址,作為收藏 Very Good
- 【C++】专项练习(2)(牛客)
- a标签,下划线的操作
- Linux虚拟机安装与使用(2022年5月24日)
- JavaSE——基础知识回顾14之集合(下半部分Map)
- dotnetty java netty,Netty(DotNetty)原理解析