我读过一篇关于哈希算法一般如何使用的论文,我看到了一件奇怪的事情。
MD5输入长度不受限制,输出长度始终相同
那么这是否意味着您可以将任何大文件变成仅 16 个字节?唯一的障碍是“如果你没有原始数据,你怎么能恢复数据”我明白了,但没有办法制作一个可逆的哈希函数吗?如果你能做到这一点,它将改变互联网的工作方式,实际上一个 10MB 的图像现在只有 15 个字节,你可以将一个 10GB 的程序压缩成 16 个字节。我在这里有什么问题吗?
我读过一篇关于哈希算法一般如何使用的论文,我看到了一件奇怪的事情。
MD5输入长度不受限制,输出长度始终相同
那么这是否意味着您可以将任何大文件变成仅 16 个字节?唯一的障碍是“如果你没有原始数据,你怎么能恢复数据”我明白了,但没有办法制作一个可逆的哈希函数吗?如果你能做到这一点,它将改变互联网的工作方式,实际上一个 10MB 的图像现在只有 15 个字节,你可以将一个 10GB 的程序压缩成 16 个字节。我在这里有什么问题吗?
哈希只是特殊用途的指纹。如果你有我的拇指印,你不知道我的脸长什么样。通过检查指纹被认为足以比较人。散列不压缩!
如果你有两个 2 字节和一个散列函数产生一个字节散列,你将平均有 256 次冲突(相同的散列)。这是因为 2 个字节为您提供 65536 个不同的状态,而不是一个字节的 256 个状态,65536 个状态/256 个状态平均等于每个哈希状态的 256 次重复。
由于这种影响,没有兴趣恢复散列以枚举可能产生某个散列的任何可能输入。
在所谓的加密散列的情况下,有一个特殊要求:如果攻击者操纵您的文件,他不应该以某种方式做到这一点,以使文件的散列不会改变。