安全hash函数需要具有哪些特性

小编 1340

安全hash函数需要具有以下三种特性:1.碰撞阻力,满足x≠y且H(x)=H(y);2.隐藏性,也被称为单向性;3.谜题友好,无法通过控制输入值x来获得想要的输出值H(x)。碰撞阻力也可以被称为防碰撞特性或抗碰撞特性,hash防碰撞用处是保证上传和下载的数据是一样的。

1.碰撞阻力

碰撞阻力也被称为防碰撞特性或抗碰撞特性,这里的碰撞是指对于两个不同的输入,产生相同的输出。如果对于哈希函数H(x),没有人能够找到碰撞,则称该函数具有碰撞阻力。即无法找到两个值x和y,使得H(x)=H(y)H(x)=H(y)成立。

hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值h = H(M)。称M是h的原像,因为H是多对一的映射,所以对于任意给定的Hash值h,对应有多个原像。如果满足x≠y且H(x)=H(y),则称为碰撞。

2.隐藏性

隐藏性其实是碰撞阻力的反过程。hash函数的计算过程是单向不可逆的,x推出H(x),但是反推没有法子(单向性),也就是说,哈希值没有泄露输入的x的信息。也就是说x的信息被隐藏了起来,这也就就是隐藏性。

3.谜题友好

如果对于任意n位输出值y,假定k选自高熵分布(分布程度很高),如果无法找到一个可行的方法,在比2的n次方小很多时间内找到x,保证H(k‖x)=y成立,那么我们称哈希函数H为谜题友好。换句话理解:k是一个随机数,来自高熵分布,然后输出的哈希值y 是已知的,那么在找出一个x 值,使得H(k‖x)=y成立这件事情上,是不可行的,或者说不可能的,这就是谜题友好。

如果一个哈希函数具备谜题友好特性,这就意味着对于这个谜题没有一个解决略,比只是随机地尝试x取值会更好。

延伸阅读

hash函数是什么意思

hash函数译为哈希函数,又称散列函数。是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出的值称为散列值或消息摘要。简单来说就是一种将任意长度的输入消息压缩成某一固定长度的消息摘要的函数。

hash函数具有三个基本性质:1.可输入的字符串为任意大小;2.产生固定大小(即存储规模)的输出,且这个大小可设定(随机数);3.能进行有效计算,即对任意给定的x,计算H(x)比较容易,用硬件和软件均可以实现。

概括而言,hash函数就是将任意长度的输入变换为固定长度的输出的不可逆的单向密码体制。hash函数的主要应用有:数字签名、生成程序或文档的“数字指纹”、用于安全存储口令。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部