首页 > 编程知识 正文

hash函数的基本要求,hash函数例题

时间:2023-05-06 10:08:58 阅读:264693 作者:2387

1、Hash函数

1、Hash函数(也称散列函数)是一个将任意长度的消息x序列映射为较短的、固定长度的一个值y的函数。
2、Hash函数的目的是为需要认证的数据产生一个‘指纹’。
为了能够实现对数据的认证,Hash应满足以下条件:

从实用角度1)已知x,求H(x)较为容易,并可用硬件或软件快速实现。2)输入的消息可以任意长,输出的‘指纹’固定长从安全角度1)原像问题(单向性):给定H(x),恢复x在计算上是可不行的2)第二原像问题(抗弱碰撞性):给定(x,H(x)),找到一个X’(x不等于x’),使得H(x’)=H(x)在计算上是不可行的3)碰撞问题(抗强碰撞性):找到两个有意义的消息x1和x2,使得H(x1)=H(x2)几乎是不可能的 下面关于Hash函数的描述不正确的是______A______ A. 对于任意长的输入消息,输出的Hash值的长度可以变 B. 原像问题是指根据输出的Hash值去求解输入的消息在计算上是不可行的 C. 第二原像问题是指找出一个消息,使得它的Hash值与某个给定消息的Hash值相同,这在计算上是不可行的 D. 第二原像问题是针对防伪造提出的 在Hash函数中,已知x,找到y(y≠x),使得h(y)=h(x)在计算上是不可行的,这一性质称为抗弱碰撞性在Hash函数中,已知y,找到x满足y=Hash (x) 在计算上是不可行的,这一性质称为 单向性 如果找到两个消息 x 和 x',它们具有相同的Hash值,则是找到了一对(碰撞)消息

3、单向Hash函数的实际应用
检测软件是否被纂改
在密钥管理中用于生成密码
消息认证码
数字签名

2、Hash函数-MD5算法

1、MD5是由密码学家Rivest在1992年公布的单向散列函数
2、特点
MD5采用了Merkle提出的迭代模型
输入消息可以任意长
每一次迭代处理512bit的消息分组
最终输出散列值为128bit
3、预处理-----对消息填充
1)填充消息使其长度为512位的整数倍

末尾处附上64bit消息长度的二进制表示然后在消息后面填充一个‘1’和对个‘0’(至少要填充一位)填充后的消息恰好是512bit的整数倍长L

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函数结果混合得非常理想。

4、SHA-1算法

安全Hash算法

SHA-1MD5最大消息长度<2的64次方不限消息分组长度512结构Merkle迭代链接变量长度160128散列值长度160128抗穷举搜索攻击的强度 强 (抗密码分析的)弱速度:慢快简洁与紧致性都简单

初始化缓冲区

算法具体操作

1、填充过程2、在填充的结果序列后附加序列3、对给定的5个32位的寄存器A,B,C,D,E赋初值4、将以上得到的寄存器的值赋给相应的变量AA,BB,CC,DD,EE。然后对512位的消息分组序列y应用主循环进行处理,每一次循环都有四轮操作 SHA-1 算法采用的是Merkle迭代结构,每一次迭代可以分为4轮,而每一轮又可以分为20步SHA-1中每一次迭代处理的消息分组的长度为512 ,输出的Hash值长度为 160 比特 5、HMAC

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描述正确的是____D_______ A. 可以实现完整性 B. 可以实现对等身份认证 C. 可以实现保密 D. 需要发送方和接收方事先共享对称密钥 HMAC结构中使用了2次Hash函数,HMAC-MD5表明使用的Hash函数为 MD5 .

一个MAC算法一般由秘密密钥k和参数化的一簇函数Hk构成,应具有如下特性:
1)容易计算
2)压缩
3)强碰撞性

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。