一、概念
将任意长度的输入变换为固定长度的输出的不可逆的单向密码体制。
Hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值:h = H(M)。其中h是定长的散列值,H是哈希函数,M是一个变长消息。
称M是h的原像。因为H是多对一的映射,所以对于任意给定的Hash值h,对应有多个原像。如果满足x≠y且H(x)=H(y),则称为碰撞。
Hash函数在数字签名和消息完整性检测等方面有着广泛的应用。Hash函数同时是一种具有压缩特性的单向函数,其像通常称为数字指纹,消息摘要或散列值。
散列函数主要用于消息认证和数字签名,因此需要具备以下特性:
- H可应用于任意长度的消息
- H产生定长的输出
- 对任意给定的消息x,计算H(x)比较容易,用硬件软件均可实现
- 单向性:对任意给定的散列值h,找到满足H(x) = h 的x在计算上是不可行的
- 抗弱碰撞性:对任意给定的消息x,找到x != y并且H(x) = H(y)的消息y在计算上是不可行的
- 抗强碰撞性:找到任何满足H(x) = H(y) 的偶对(x,y)在计算上是不可行的
性质2是哈希函数的基本特性