Hash 是否可以从(部分)MD5哈希中检索密码?

Hash 是否可以从(部分)MD5哈希中检索密码?,hash,passwords,md5,brute-force,rainbowattack,Hash,Passwords,Md5,Brute Force,Rainbowattack,假设我只有MD5散列的前16个字符。如果我使用暴力攻击、彩虹表或任何其他方法来检索原始密码,我预计会有多少兼容的候选密码?1.(我不认为)101001000,10^12?即使是粗略的回答也是受欢迎的(对于数字,但请与哈希理论和方法保持一致)。您永远无法从部分哈希中获取密码。MD5的输出是16字节(128位)。我想你说的是十六进制表示,因此是32个字符。因此,“16个字符”表示“64位”。您正在考虑将MD5的输出截断为64位 MD5接受长度高达264位的输入;假设MD5表现为随机函数,这意味着21

假设我只有MD5散列的前16个字符。如果我使用暴力攻击、彩虹表或任何其他方法来检索原始密码,我预计会有多少兼容的候选密码?1.(我不认为)101001000,10^12?即使是粗略的回答也是受欢迎的(对于数字,但请与哈希理论和方法保持一致)。

您永远无法从部分哈希中获取密码。

MD5的输出是16字节(128位)。我想你说的是十六进制表示,因此是32个字符。因此,“16个字符”表示“64位”。您正在考虑将MD5的输出截断为64位

MD5接受长度高达264位的输入;假设MD5表现为随机函数,这意味着218446744073709551616可能的输入字符串将在264个输出之间或多或少地一致映射,因此给定输出的平均候选数约为218446744073709551552,接近105553023288523357112.95

但是,如果你认为你可以找到至少一个候选,那么这意味着你考虑的可能密码的空间大大减少了。A是一种特殊的预计算表,它接受一种紧凑的表示形式(以相对昂贵的查找过程为代价),但如果它包含N个密码,则这意味着,在某个时刻,有人可以应用N次哈希函数。在实践中,这严重限制了大小N。假设N=260(这意味着表生成器有大约100个NVidia GTX 580 GPU,可以运行六个月;此外,表将使用相当多的硬盘),那么平均而言,64位输出中只有1/16的表中有匹配的密码。对于表中的密码,表中没有其他密码导致相同输出的概率为93.75%;如果您愿意,如果您找到一个匹配的密码,那么您将平均找到0.0625个其他候选密码(即大多数情况下,没有其他候选密码)


简而言之,你的问题的答案取决于你考虑的可能密码的大小N(那些在彩虹表构造中被覆盖的密码);但是,在基于地球的技术的实践中,如果你能为64位输出找到一个匹配的密码,很可能你将无法找到另一个密码(尽管还有很多其他密码)。

AFAIK哈希在理论上是不可逆转的,即使你能在实际中强行使用,在普通PC上也需要几个月的时间。