布谷鸟哈希函数的参数_哈希函数

本文介绍了单向函数和哈希码的概念,强调了哈希函数的单向性、抗碰撞和随机性等安全性质。哈希函数在消息完整性检测、消息源认证码、数字签名和口令认证等方面有着广泛应用。文章还讨论了哈希函数的一般结构,通过分组和压缩函数提高攻击的难度。
摘要由CSDN通过智能技术生成

单向函数

特点:正向很容易 逆向很难

定义:函数f:{0,1}*->{0,1}*若满足下列两个条件,则称之为强单向函数:

1.计算f(x)是容易的,即f(x)是多项式时间可计算的

2.计算f函数的逆f-1(x)是困难的,即对每一多项式时间概率算法M,每一多项式p(n)和充分大的n(n>n0)有

Pr{M(f(Un)∈f-1(f(Un))}<1/p(n)

Hash码

把任意长变消息为固定长短的Hash码(信息摘要)

Hash码有很强的的错误检测能力,即改变数据的任何一位或多位,都将极大可能改变其Hash码。

Hash码与数据紧密联系,很好地反映着数据的真实性和完整性,因此人们把Hash码称为数据的‘指纹’。

Hash码是从数据压缩而成的,长度比数据的长度小的多,所以人们称Hash码为数据的‘摘要’。

Hash函数

定义为h=H(M)

Hash函数要满足如下安全性条件:

单向性(抗原像):对若干给定的消息,计算其哈希值容易.但是,对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。

弱抗碰撞(抗二次原像):对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。

强抗碰撞:找任意一对不同的消息M1,M2,使H(M1)=H(M2)在计算上是不可行的。

随机性:Hash函数的输出具有伪随机性。

Hash函数的用途:

消息完整性检测

消息源认证码

数字签名                 1.自己签很容易 2.别人很难模仿 3.一旦有纠纷 能被鉴别

Hash链可以用于口令认证(身份鉴别)

比特承诺等密码协议

Hash函数的实际用法:

1.用于认证

A->B:

A->B:

2.用于认证和保密

A->B:

A->B:

3.用于认证和数字签名

A->B:

4.用于认证、数字签名和保密性

A->B:

解释:M-数据

H(M)-M的Hash值

x||y-表示收尾相接

K-对称密钥

S-双方共享的秘密值

KdA-私钥

Hash函数的一般结构

首先将输入数据分为L-1个大小为b的分组。如果第L-1个分组不足b位,则将其填充为b位。然后再附加上一个表示输入总长度的分组。由于输入包含长度,所以攻击者如果想要攻击成功,就必须找出具有相同Hash值且长度相等的两条数据,或者找出两条长度不等但加入数据长度后Hash值相同的长度,从而增加了攻击的难度。

这类Hash函数的一般结构可归纳如下:

CV0=IV=n位的初始值

CVi=f(CVi-1,Mi-1) 1<=i<=L

H(M)=CVL

Hash函数的输入为数据M,由L个分组M0,M1,M2,...,ML-1组成。

f为压缩函数,其输入是前一步中得出的n为中间结果CVi-1(也称为链接变量)和一个b位数据分组Mi-1,输出位一个n位结果CVi。          由于通常b>n,所以f称为压缩函数。

最后的迭代压缩结果为Hash码CVL。

7a4944888b412d0312aff4cd64eeff80.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值