有人告诉我,他见过这样的软件系统:

从其他系统检索MD5加密密码; 解密加密的密码和 使用系统自己的算法将密码存储在系统的数据库中。

这可能吗?我认为解密MD5哈希是不可能/可行的。

我知道有MD5字典,但是有真正的解密算法吗?


当前回答

唯一可以工作的是(如果我们提到密码只是散列,没有添加任何类型的盐来防止重放攻击,如果是这样,你必须知道盐)顺便说一句,得到一个字典攻击工具,许多单词,数字等文件,然后创建两行,一行是单词,数字(在字典中),另一个是单词的散列,并比较散列,如果匹配你得到它…

这是唯一的方法,不用进行密码分析。

其他回答

不可能,至少在合理的时间内是不可能的。

通常的处理方式是密码“重置”。也就是说,你给他们一个新的(随机的)密码,并在电子邮件中发送给他们。

MD5是一种哈希算法,不能还原哈希值。

您应该添加“更改密码功能”,用户提供另一个密码,计算散列并将其存储为新密码。

在这里可以看到所有其他的答案,关于它如何以及为什么不可逆,以及为什么你不想这样做。

为了完整起见,这里有彩虹表,你可以在上面查找可能的匹配。不能保证彩虹表中的答案是用户选择的原始密码,这样会使用户非常困惑。

同样,这也不适用于咸散列。许多安全专家都建议用盐腌制。

理论上,对哈希值进行解密是不可能的,但您可以使用一些肮脏的技术来获取原始的纯文本。

Bruteforcing: All computer security algorithm suffer bruteforcing. Based on this idea today's GPU employ the idea of parallel programming using which it can get back the plain text by massively bruteforcing it using any graphics processor. This tool hashcat does this job. Last time I checked the cuda version of it, I was able to bruteforce a 7 letter long character within six minutes. Internet search: Just copy and paste the hash on Google and see If you can find the corresponding plaintext there. This is not a solution when you are pentesting something but it is definitely worth a try. Some websites maintain the hash for almost all the words in the dictionary.

MD5有它的弱点(见维基百科),所以有一些项目,试图预先计算哈希值。维基百科也暗示了其中一些项目。我所知道(并且尊敬)的一个是ophrack。您不能告诉用户他们自己的密码,但您可以告诉他们一个有效的密码。但我想:还是给他们寄个新密码吧,以防他们忘了。