1、Hash函数(也称散列函数)是一个将任意长度的消息x序列映射为较短的、固定长度的一个值y的函数。
2、Hash函数的目的是为需要认证的数据产生一个‘指纹’。
为了能够实现对数据的认证,Hash应满足以下条件:
3、单向Hash函数的实际应用
检测软件是否被纂改
在密钥管理中用于生成密码
消息认证码
数字签名
1、MD5是由密码学家Rivest在1992年公布的单向散列函数
2、特点
MD5采用了Merkle提出的迭代模型
输入消息可以任意长
每一次迭代处理512bit的消息分组
最终输出散列值为128bit
3、预处理-----对消息填充
1)填充消息使其长度为512位的整数倍
2)初始化缓冲区
MD5采用的是(Merkle)迭代结构,输入消息长度可以是(任意长) ,输出的Hash值长度为 (128bit),每一次迭代处理的消息分组的长度为(512)。若MD5输入消息长度为605位,则需要填充(355)比特;若消息的长度为1472位,则需要填充(512)比特MD5的每一次迭代可以分为4轮,而每一轮又可以分为16步 3.MD5轮结构基本逻辑函数g
每一轮使用一个基本逻辑函数g输入是三个32位的字,输出是一个32位的字它执行位逻辑运算
MD5具有的性质:Hash函数的每一位均是输入消息序列中每一位的函数。该性质保证了在Hash函数计算过程中产生基于消息x的混合重复,从而使得生成的Hash函数结果混合得非常理想。
安全Hash算法
SHA-1MD5最大消息长度<2的64次方不限消息分组长度512结构Merkle迭代链接变量长度160128散列值长度160128抗穷举搜索攻击的强度 强 (抗密码分析的)弱速度:慢快简洁与紧致性都简单初始化缓冲区
算法具体操作
Hash函数实现完整性验证中存在的问题—认证
1、消息认证码:
一种确认完整性并进行认证的技术
2、MAC是一种带钥匙的函数h=MAC(x)
2个输入:消息x和共享密钥K
输出:固定长度的数字,称之MAC值或认证码
3、MAC的构造
常见的2种MAC构造方法
1)基于分组密码的MAC
CBC-MAC
2)基于密码hash函数的MAC—HMAC
HMAC—MD5
HMAC—SHA-1
一个MAC算法一般由秘密密钥k和参数化的一簇函数Hk构成,应具有如下特性:
1)容易计算
2)压缩
3)强碰撞性