Rainbow 桌子上的链条如何工作?
我想知道是否有人可以详细解释链如何在彩虹表中工作,就像对一个完全的新手一样,但与编程相关。
据我了解,一条链的长度是 16 个字节。 8 个字节标记起点,8 个字节标记结束。我还了解到,在文件名中,我们的链长度为 2400。这意味着在我们的起点和终点之间,只有 16 个字节,我们有 2400 个可能的明文,什么?这是如何运作的?在这 16 个字节中,我如何获得 2400 个哈希值和明文,或者我是否误解了这一点?
非常感谢您的帮助。
谢谢。
PS:我已经阅读了相关论文并用谷歌搜索了这个主题。我想我只是缺少一些重要的东西来让这些齿轮转动。
I was wondering if somebody could explain in detail, how chains work in rainbow tables as you would to a complete novice, but with relevance to programming.
I understand that a chain is 16 bytes long. 8 bytes mark the starting point and 8 mark the end. I also understand that in the filename we have the chain length i.e. 2400. Which means that between our starting point and end point in just 16 bytes we have 2400 possible clear texts, what? How does that work? In those 16 bytes how do I get my 2400 hashes and clear texts, or am I misunderstanding this?
Your help is greatly appreciated.
Thanks.
P.S.: I have read the related papers and googled this topic a fair bit. I think im just missing something important to make these gears turn.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
知道哈希链的起点后,您可以通过重复应用哈希和归约函数来计算所有中间体和终点。
当您想要在链中搜索哈希密码时,终点就出现了。应用 hash-and-reduce 最多达到链长度的次数;在每个阶段,查看您的中间体是否与您计算的任何链的端点匹配。如果是这样,那么您就找到了包含密码的链。然后,您知道链从哪里开始,因为您已经存储了它的起点,因此您可以从那里轻松地向前遍历链以找到密码,该密码在散列一次后会产生散列值。
完整的彩虹表过程应用这种搜索,但使用一系列不同的归约函数来避免散列冲突;我不太了解细节。
Knowing the start point for a hash chain, you can compute all the intermediates and the end-point by repeatedly applying the hash-and-reduce function.
The end point comes in when you want to search the chain for a hashed password. Apply hash-and-reduce up to the chain-length number of times; at each stage, look to see if your intermediate matches the endpoint of any chain that you have computed. If so, then you've found the chain that includes the password. You then know where the chain starts because you've stored its start point, and so you can trivially walk forwards through the chain from there to find the password which, when hashed once, yields the hash value.
The full rainbow table process applies this sort of searching but with a family of different reduction functions to avoid hash collisions; I'm not well versed in the details.