Hash 为什么不可能反转加密哈希?
为什么不能像反转数学函数一样反转算法呢?怎么可能做出一个不可逆的算法Hash 为什么不可能反转加密哈希?,hash,cryptography,md5,cryptographic-hash-function,reversing,Hash,Cryptography,Md5,Cryptographic Hash Function,Reversing,为什么不能像反转数学函数一样反转算法呢?怎么可能做出一个不可逆的算法 如果你用的是彩虹桌,是什么让你无法用盐来打破它呢?如果你正在用蛮力制作一个彩虹表来生成它,那么它会创造出每一个可能的纯文本值(长度),最终会包括每个可能的密码和每个可能的密码的salt(salt和密码/文本将作为一个单独的文本片段组合在一起).我不认为md5给出了全部结果-因此,您无法反向查找md5版的原始内容想想从1到9999的2个数字。添加它们。现在告诉我最后的数字 我无法从这些信息推断出你最初想到的数字。这是一个非常简单
如果你用的是彩虹桌,是什么让你无法用盐来打破它呢?如果你正在用蛮力制作一个彩虹表来生成它,那么它会创造出每一个可能的纯文本值(长度),最终会包括每个可能的密码和每个可能的密码的salt(salt和密码/文本将作为一个单独的文本片段组合在一起).我不认为md5给出了全部结果-因此,您无法反向查找md5版的原始内容想想从1到9999的2个数字。添加它们。现在告诉我最后的数字 我无法从这些信息推断出你最初想到的数字。这是一个非常简单的单向散列示例
现在,我可以想到两个给出相同结果的数字,这就是这个简单示例不同于像MD5或SHA1这样的“正确”加密哈希的地方。使用这些算法,计算出一个产生特定哈希的输入应该很困难。不能反转哈希函数的一个主要原因是数据丢失 考虑一个简单的示例函数:“OR”。如果将其应用于1和0的输入数据,则得到1。但是现在,如果你知道答案是“1”,你如何撤销原始数据?你不能。它可能是1,1,或者可能是0,1,或者可能是1,0 至于盐桌和彩虹桌。是的,理论上,你可以有一个彩虹表,包含所有可能的盐和密码,但实际上,这太大了。如果您尝试了小写字母、大写字母、数字和12个标点符号(最多50个字符)的所有可能组合,则(26+26+10+12)^50=2.9 x 10^93的可能性不同。这比可见宇宙中的原子数量还要多
rainbow表背后的思想是提前计算一组可能的密码的哈希值,而密码比50个字符短得多,因此可以这样做。这就是为什么要在前面添加一个salt:如果在密码前面添加“57sjflk43380h4ljs9flj4ay”。虽然有人可能已经计算了“pa55w0rd”的哈希,但没有人已经计算了“57sjflk43380h4ljs9flj4aypa55w0rd”的has。md5是128位,即3.4*10^38组合 八个字符长度的密码总数:
- 仅小写字符和数字:36^8=2.8*10^12
- 大小写和数字:62^8=2.18*10^14