为什么你不能像反转数学函数一样反转算法?如何制作一个不可逆的算法呢?
如果你使用彩虹表,是什么让使用盐不可能破解它?如果你用蛮力制作彩虹表来生成它,那么它就会发明每个明文值(到一个长度),最终会包含每个可能密码的盐和每个可能的盐(盐和密码/文本会只是作为一个单独的文本聚集在一起。)
答案 0 :(得分:44)
答案 1 :(得分:20)
考虑从1到9999的2个数字。添加它们。现在告诉我最后的数字。
根据这些信息,我不能推断出你最初想到的数字。这是单向散列的一个非常简单的例子。
现在,我可以想出两个给出相同结果的数字,这就是这个简单示例与“正确”加密哈希(如MD5或SHA1)不同的地方。使用这些算法,在计算上很难想出一个产生特定散列的输入。
答案 2 :(得分:3)
无法反转哈希函数的一个重要原因是数据丢失。
考虑一个简单的示例函数:'OR'。如果将其应用于输入数据1和0,则会产生1.但现在,如果您知道答案为“1”,那么如何退出原始数据?你不能。它可能是1,1或者可能是0.1,或者可能是1.0。
关于盐渍和彩虹表。是的,从理论上讲,你可以拥有一个彩虹表,它可以包含所有可能的盐和密码,但实际上,它太大了。如果您尝试了小写字母,大写字母,数字和十二个标点符号的每种可能组合,最多50个字符长,即(26 + 26 + 10 + 12)^ 50 = 2.9 x 10 ^ 93种不同的可能性。这比可见宇宙中的原子数多。
彩虹表背后的想法是提前计算一堆可能的密码的哈希值,并且密码远小于50个字符,因此可以这样做。这就是为什么你要在前面添加一个盐:如果你将'57sjflk43380h4ljs9flj4ay'添加到密码的前面。虽然有人可能已经为“pa55w0rd”计算了哈希值,但是没有人会计算出'57sjflk43380h4ljs9flj4aypa55w0rd'的哈希值。
答案 3 :(得分:1)
我认为md5不会给你全部结果 - 所以你不能倒退找到md5-ed的原始内容
答案 4 :(得分:1)
md5是128位,即3.4 * 10 ^ 38种组合。
八个字符长度密码的总数:
您必须为密码存储8个字节,为md5值存储16个字节,即每个条目总共24个字节。
因此您的彩虹桌需要大约67000G或5200000G存储空间。 实际上可以找出密码的唯一原因是人们使用明显的密码。