2010-04-02 45 views
5

我在想,如果有人能够详细解释,连锁店在彩虹表中的工作方式与完全新手一样,但与编程相关。连锁店如何在彩虹桌上工作?

我知道一个链是16个字节长。 8个字节标记起点,8个标记结束。我也明白,在文件名中,我们的链长是2400.这意味着我们的起点和终点之间只有16个字节,我们有2400个可能的明文,什么?这是如何运作的?在这16个字节中,我如何获得2400个哈希和明文,或者我误解了这些?

非常感谢您的帮助。

谢谢。

P.S .:我已经阅读了相关论文,并将这个主题进行了一些简单的搜索。我想我只是错过了一些重要的东西来使这些齿轮转向。

+0

你想破解密码吗? – bmargulies 2010-04-02 22:22:59

+0

不,我想了解如何使用起点和终点来生成明文和散列。添加我也理解64位int如何转换为字符串。只是想了解2400次哈希来自哪里。 – 2010-04-02 22:26:16

回答

3

了解哈希链的起点,您可以通过重复应用哈希和减法函数来计算所有中间值和终点。

当您想要搜索散列密码链时,终点出现了。将哈希和减少应用到链长度的次数;在每个阶段,请查看您的中介是否与您计算的任何链的端点匹配。如果是这样,那么你已经找到了包含密码的链。然后你知道链的起始位置,因为你已经存储了它的起始点,所以你可以轻松地从这里通过链向前走,找到密码,当散列一次时,产生散列值。

完整的彩虹表过程应用这种搜索方式,但有一系列不同的简化函数以避免散列冲突;我对细节不太熟悉。

+0

这是否意味着散列永远不会计算链的端点?我的理解是:因为它结束链哈希函数从来没有应用到它,如[插图](https://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Rainbow_table1.svg/1200px-Rainbow_table1 .svg.png)来自[Wikipedia article](https://en.wikipedia.org/wiki/Rainbow_table)。或者我在这里失去了一些东西? – 2017-11-22 07:24:00

+0

这是一个很好的[在crypto.stackexchange上的答案](https://crypto.stackexchange.com/a/5901/53497),解释链的确切计算方式。 – 2017-11-26 12:59:46