密码学哈希函数

什么是哈希函数?哈希函数是一个数学函数,其具有以下三个特性:

  • 输入可以为任意大小的字符串;
  • 其产生固定大小的输出;
  • 对于特定的输入字符串,能在合理时间计算出结果。对应n位的字符串,其哈希值计算的复杂度为O(n)。

要使哈希函数达到密码安全,需要附加以下三个特性:碰撞阻力、隐秘性、谜题友好

特性1:碰撞阻力

这里的碰撞是指对于两个不同的输入,产生相同的输出。如果对于哈希函数H(x),没有人能够找到碰撞,则称该函数具有碰撞阻力。

定义:


  Hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值h = H(M)。

  称M是h的原像。因为H是多对一的映射,所以对于任意给定的Hash值h,对应有多个原像。如果满足x≠y且H(x)=H(y),则称为碰撞。

应用:信息摘要

  用于验证数据的完整性,即判断数据是否被篡改过。

特性2:隐秘性

定义:

  哈希函数H具有隐秘性,如果:当其输入r选自一个高阶最小熵的概率分布,在给定H(r||x)条件下来确定x是不可行的。

应用:承诺

我们把想做的事情称为承诺。这里承诺是一个数字化过程,类比如下:首先选定一个数字,将数字装进信封,然后将该信封放到一个人人都可以看到的桌上。这样做以后,可以说你就信封里的数字做出来承诺,在打开信封之前,虽然你已经做出了承诺,但是对于其他人来说它还是秘密。在之后你可以打开信封,展示你的承诺的数值。

特性3:谜题友好

定义:

如果对于任意n位输出值y,假定k选自高阶最小熵分布,如果无法找到一个可行的方法,在比2的n次方小很多的时间内找到x,保证H(k||x)=y成立,那么我们称哈希函数H为谜题友好。

  应用:搜索谜题

在这个应用种,我们将建立一个搜索谜题,该谜题是一个需要对庞大空间进行搜索,才能找到解决办法的数学问题。该搜索谜题没有捷径,也就是说除了搜索庞大的空间来进行求解,没有其他办法。


最后,欢迎各位扫描以下二维码关注我的个人公众号。

密码学哈希函数_第1张图片

你可能感兴趣的:(密码学哈希函数)