散列和散列文件

时间:2011-07-05 05:53:28

标签: hash

我遇到了一个工具WINMD5FREE,它为每个文件生成一个唯一的哈希码。它接受任何文件类型并提供33位哈希码的输出。无论如何都要反转该过程以从该哈希码中获取文件?

也是一个公平的怀疑。在下载一些流行的工具时,除了下载链接之外还有其他Md5,SHA等链接,这些链接代表什么?

2 个答案:

答案 0 :(得分:3)

您似乎误解了哈希码是什么。它们是不可逆转的。

你可以将它们用于各种各样的事情。假设您想知道两台计算机上是否有相同的文件,但文件太大而无法通过网络发送,只需计算每台计算机上文件的哈希码,如果得到相同的数字,文件是相同的,如果一个位不同,您将获得不同的哈希码。

哈希码也用于密码验证。注册网站时,请输入密码。此字符串经过哈希处理并存储在数据库中。由于散列密码不可逆,没有人(我们不会在这里提出一些警告)可以找到您的密码。当您要登录时再次输入密码时,系统会对字符串进行哈希处理,并将其与存储在其数据库中的字符串进行比较。如果散列字符串与系统匹配,则可以自信(再次,有一些警告)您键入了正确的密码。

详细了解http://en.wikipedia.org/wiki/Hash_code

答案 1 :(得分:0)

Hashcodes通常是单行道。设计这些散列函数/算法时的意图是难以扭转这一过程。

通常它们用于快速生成字符串的“唯一”标识符。给定相同的参数/算法,字符串将始终转换为相同的哈希。即使您只更改了一个字符,它也可能会转换为不同的字符,但结果将始终相同。

为了恢复目的,ppl生成大表所谓的彩虹表来反转这个过程。您可以通过例如反转哈希值蛮力。

除了一条注释:哈希算法总是生成固定长度的哈希值。因此,这些哈希计算不是双射的。不是双射的意味着两个字符串有可能被映射到相同的散列。因此,如果你暴力行为,可能会有一些误报。

因为进一步的加法强制时间在某种程度上取决于输入中允许的最大字符数。正如评论者所说,几乎不可能扭转文件的哈希值。