![]() |
1
63
维基百科的文章有点难理解。简而言之,你可以把彩虹表看作是一个大字典,里面有预先计算好的哈希值和密码。 彩虹表和其他字典的区别仅仅在于如何存储条目的方法。彩虹表针对哈希和密码进行了优化,从而在保持良好查找速度的同时实现了极大的空间优化。但本质上,它只是一本字典。 当攻击者从您那里窃取一长串密码散列时,他可以快速检查其中是否有任何一个在彩虹表中。对于那些是的,彩虹表也将包含从中散列出来的字符串。 当然,有太多的哈希表无法将它们全部存储在彩虹表中。因此,如果哈希不在特定的表中,黑客就不走运了。但是,如果您的用户使用简单的英语单词,并且您只对它们进行了一次哈希运算,那么一个好的彩虹表很可能包含密码。 |
![]() |
2
15
当有人使用 Rainbow table 破解密码。 如果你担心这个,你应该用 Salt . 还有一个 Stack Overlow question 这可能有助于你比维基百科更好地理解salt… |
![]() |
3
9
这是一个 useful article on Rainbow Tables 对于非专业人士。(不是说你是外行,而是写得很好,很简洁。) |
![]() |
4
2
参加派对很晚,但我也知道彩虹表是一种攻击哈希/未加安全保护的密码的方法。但是最近在Twitter上 http://codahale.com/how-to-safely-store-a-password/ 是共享的,取决于您的需要和关注。您可能无法用盐来保护密码存储的安全。 我希望这对你有帮助。 |
![]() |
5
1
维基百科是你的朋友: |
![]() |
6
1
一般来说,您可以加密大量可能的短明文字符串(即密码),并将加密的值存储在明文旁边。这使得在拥有加密值的情况下简单地查找纯文本变得相对简单。 这对于弱密码散列和/或未加保护的密码散列最有用。一个流行的例子是 LAN Manager hash ,由Windows版本至多XP用于存储用户密码。 注意,即使是像lm散列这样简单的东西,一个预先计算的彩虹表也需要花费大量的CPU时间来生成并占用相当大的空间(大约10s的千兆字节IIRC)。 |
![]() |
7
1
彩虹表基本上允许人们可行地存储大量预先计算的哈希。 这使得破解散列密码变得容易,因为这项工作已经完成,而不是执行一整堆散列函数,它们实际上只需要进行数据库查找。 防止此类攻击的最佳保护是在密码中使用salt(随机字符)。也就是说,不存储MD5(密码),而是存储MD5(密码+salt),或者更好的MD5(salt+md5(密码))。 因为即使有彩虹桌,也几乎不可能存储所有可能的盐散列。 顺便说一句,显然您必须将盐存储在哈希表中,这样您就可以对用户进行身份验证。 |