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

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

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

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


当前回答

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

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

其他回答

MD5是一个加密(单向)哈希函数,因此没有直接的方法来解码它。加密哈希函数的全部目的就是你不能撤销它。

您可以做的一件事是使用蛮力策略,即猜测哈希了什么,然后使用相同的函数哈希它,看看它是否匹配。除非散列数据非常容易猜测,否则可能需要很长时间。

不,他一定是被MD5字典搞糊涂了。

加密哈希(MD5等)是一种方法,您不能仅使用摘要返回原始消息,除非您有关于原始消息的其他不应该的信息等。

是的,你所要求的一切都是可能的。 在没有帮助的情况下“解密”MD5密码是不可能的,但是可以将MD5密码重新加密到另一种算法中,只是不能一蹴而就。

您要做的就是让用户能够使用旧的MD5密码登录到新系统。在他们登录时,他们已经给了你的登录程序一个未加密的密码版本,你证明与你拥有的MD5哈希匹配。然后,您可以将这个非散列密码转换为新的散列算法。

显然,这是一个扩展的过程,因为您必须等待用户告诉您密码是什么,但它确实有效。

(注意:七年后,哦,希望有人会发现它有用)

在寻找哈希函数的逆函数方面,没有办法“恢复”哈希函数。如前所述,这就是哈希函数的意义所在。它不应该是可逆的,它应该允许快速哈希值计算。因此,找到产生给定哈希值的输入字符串的唯一方法是尝试所有可能的组合。这就是所谓的蛮力攻击。

尝试所有可能的组合需要花费大量时间,这也是为什么使用哈希值以相对安全的方式存储密码的原因。如果攻击者能够访问您的数据库,其中包含所有用户密码,那么无论如何您都会失败。如果您有哈希值和(理想地说)强密码,那么攻击者将很难从哈希值中获取密码。

存储哈希值也没有性能问题,因为计算哈希值相对较快。因此,大多数系统所做的是计算用户输入的密码的哈希值(这很快),然后将其与用户数据库中存储的哈希值进行比较。

要做到这一点并不容易。这就是首先对密码进行哈希的意义。:)

你应该做的一件事是手动为他们设置一个临时密码,并将其发送给他们。

我不愿提及这一点,因为这是一个坏主意(而且也不能保证一定有效),但您可以尝试在彩虹表(如milw0rm)中查找散列,看看是否可以通过这种方式恢复旧密码。