哈希函数
Last updated
Last updated
哈希函数(Hash Function)把消息或数据压缩成摘要,使得数据量变小。其一般模型如下
显然对于任何一个hash值,理论上存在若干个消息与之对应,即碰撞。
哈希函数的基本需求如下
输入长度可变
hash函数可以应用于任意长度的数据
输出长度固定
hash函数的输出长度固定
效率
对于任意消息 $x$,计算 $H(x)$ 很容易
单向性
对于任意哈希值h,想要找到满足$H(x)=h$ 的x在计算上不可行。
抗弱碰撞性
对于任意消息x,找到满足另一消息y,满足$H(x)=H(y)$ ,在计算上不可行。
抗强碰撞性
找到任意一对满足 $H(x)=H(y)$ 的消息x和y在计算上不可行。
伪随机性
哈希函数的输出满足伪随机性测试标准。
散列值的目的如下
确保消息的完整性,即确保收到的数据确实和发送时的一样(即没有修改、插入、删除或重放),防止中间人篡改。
冗余校验
单向口令文件,比如linux系统的密码
入侵检测和病毒检测中的特征码检测
目前的Hash函数主要有MD5,SHA1,SHA256,SHA512。目前的大多数hash函数都是迭代性的,即使用同一个hash函数,不同的参数进行多次迭代运算。
MD5
128 bit
SHA1
160 bit
SHA256
256 bit
SHA512
512 bit