欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Hash函数理解

程序员文章站 2024-02-29 22:34:58
...

哈希函数(Hash)
 又称为 散列函数、散列算法、杂凑函数等
 是一种单向密码*:从明文到密文的不可逆映射
 可将任意长度的输入变换为固定长度的输出
 生成消息的“数据指纹”(也称消息摘要或散列值),
在数据完整性认证和数字签名等领域有广泛的应用
分类:
 改动检测码MDC(Manipulation Detection Code)
 不带**哈希函数,检测消息有无篡改
 消息认证码MAC(Message Authentication Code)
 带**哈希函数,认证消息源真实性与消息完整性

对任意长度的输入消息,产生固定长度的输出
公式表示:
h=H(M)
M:任意长度的消息
H:哈希函数
h:固定长度的哈希值

性质:
 输入:任意有限长度消息;输出:固定长度哈希值
 可计算性:对于任意给定消息,计算哈希值容易
 单向性:对给定哈希值h,要找到M使 H(M)=h 在计算
上不可行
 抗弱碰撞性:对于给定消息M1,找到M2 ≠M1 ,且满足
H( M1 )=H(M2)在计算上是不可行的
 抗强碰撞性:找到任何满足H(M1)=H(M2)的消息对(M1,
M2),在计算上是不可行的

一般模型:
Hash函数理解

核心:
 设计无碰撞的压缩函数 f
 敌手对算法的攻击重点是f 的内部结构
 f 和分组密码一样是由多轮处理组成
 攻击者对各轮的位模式进行分析,找出 f 的碰撞
 f 是压缩函数,其碰撞不可避免
 设计f 时,应保证找出碰撞在计算上是不可行的
两个重要的迭代型哈希函数
 Hash算法众多,MD5(128位)SHA(160位)最著名
 MD5、SHA-1
相关标签: hash 散列函数