如果这些哈希算法是单向函数,那么如何在网络上提供这些反向哈希?这些查找站点使用的反向哈希过程是什么?
当我们说哈希函数h是单向函数时,我们的意思是
- 给定一些固定字符串w,它是"容易";计算h(w(,但是
- 给定某个随机选择的字符串x的f(x(;硬";以找到字符串w,其中f(w(=f(x(
因此,从这个意义上说,如果你有一个你一无所知的字符串的哈希,那么就没有简单的方法来反转这个哈希。
然而,这并不意味着,一旦你把某件事搞砸了,它就永远无法逆转。例如,假设我知道您正在散列字符串YES
或字符串NO
。然后,我可以预先计算h(YES
(和h(NO
(,记下这些值,然后将您的哈希字符串与两个哈希值进行比较,以确定您对哪个字符串进行了哈希处理。同样,如果我知道你在散列一个0到999999999之间的数字,我可以散列所有这些值,存储结果,然后将你的数字散列与我预先计算的散列进行比较,看看你散列了哪一个。
为了直接回答你的问题,提供反向哈希表的网站并不是通过反向哈希函数来计算这些表,而是通过对大量字符串进行哈希并记下结果。他们可能会对人们期望使用的字符串进行散列(例如,最常见的弱网络密码(,也可能会选择随机的短字符串来覆盖所有可能的简单字符串(按照上面的数字散列示例(。
由于加密哈希函数(如SHA1、SHA2、SHA2和Blake2等(是单向函数的候选者,因此无法反转哈希。
那么他们是如何做到这一点的呢;他们可以选择三种方式;
-
通过生成已知字符串的哈希来构建一个对数据库
(x, hash(x))
;破解的密码列表、英语词典、所有语言的维基百科文本,以及所有字符串,其中一些字符串绑定为8;这种方法有一个巨大的问题,即存储所有输入对及其哈希的空间。
-
构建 彩虹表。彩虹桌是一种时间与记忆的交易。在开始构建之前,选择表参数以覆盖目标搜索空间。
有关密码破解的详细信息,请参阅彩虹破解。
-
将两者合并由于目标搜索空间的原因,并非所有已知的字符串、密码等都可以放在Rainbow表中。对于这些,请使用1。选项
别忘了,他们中的一些人还提供在线哈希工具。一旦你要求对一个值进行散列,它就会进入他们的数据库/彩虹表,当你稍后访问网站并询问你存储的散列的预图像时,他们现在竟然有了,真是令人惊讶!如果文本是敏感的,不要使用在线哈希服务。
没有反向哈希过程。你只需猜测一个密码并对其进行散列。你可以将这些猜测和散列建立大型数据库,用于反向查找,但这并不是颠倒散列本身。搜索";彩虹桌";了解更多详细信息。
那些网站没有预处理任何类型的反向哈希。有一些表被称为">彩虹表";。这些彩虹表是预计算的表,用于缓存加密哈希函数的输出。他们得到了很多字符串,并为它们计算了哈希值,当有人搜索哈希值时,他们会从表中查找相应的值,并显示。