可以使用可逆哈希算法作为压缩函数吗?
据我们所知,SHA-256输出中的任何文本、文件、字节…都将以64十六进制长度返回。有没有可能创建一个密码,它可以做与SHA-256相同的事情,但可以反转,所以如果我
解答动态
严格地说,所有哈希函数都在压缩,因为输出可能小于输入,但我想您是在问压缩以后可以无损解压缩的数据。
由于鸽子洞原理,这是不可能的。哈希算法的固定输出空间小于输入空间这一事实意味着,对于同一输出,总是有多个可能的输入。即使您可以找到一个前映像(即“反向”散列),您也不知道它是原始前映像还是仅仅是前映像。如果输入大小足够小(小于散列值),那么这是可能的,因为您可以丢弃较大的前图像,只保留非常有限的有意义的小图像(例如,只有有效的ASCII字符串),但这不是压缩。
作为一个极端的例子,想象一个“散列函数”;一个简单的前像攻击:多项式x+1的1位CRC(即偶数奇偶校验位)。如果我给你这个函数的输出,输出是1,你将完全不知道输入是什么。你可以计算输入,但找不到输入。对于1位哈希,输入空间中所有可能输入的一半映射到同一输出!
这种不可能是施奈尔流行笑话的基础事实:对布鲁斯来说Schneier,SHA-1仅仅是一个压缩算法。
如果问题是关于(当前形式)
可逆加密哈希函数
那么不是!
加密安全散列函数的单向性属性将阻止这种情况。哈希函数不使用键。因此,如果你能反转,每个人都会反转,根本就没有安全的散列函数。
此外,数学上也不可能;散列函数使用任意大的输入来消化固定大小的$\ell$
- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。