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),在计算上是不可行的
一般模型:
核心:
设计无碰撞的压缩函数 f
敌手对算法的攻击重点是f 的内部结构
f 和分组密码一样是由多轮处理组成
攻击者对各轮的位模式进行分析,找出 f 的碰撞
f 是压缩函数,其碰撞不可避免
设计f 时,应保证找出碰撞在计算上是不可行的
两个重要的迭代型哈希函数
Hash算法众多,MD5(128位)和SHA(160位)最著名
MD5、SHA-1
上一篇: Java之File文件过滤器
下一篇: 高效的内存区块缓存容器