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

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

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

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


当前回答

不,你不能解密/反向md5,因为它是一个单向哈希函数,直到你不能在md5中发现广泛的漏洞。 另一种方法是有一些网站有大量的密码集数据库,所以你可以尝试在线解码你的MD5或SHA1哈希字符串。 我尝试了http://www.mycodemyway.com/encrypt-and-decrypt/md5这样的网站,它对我来说工作得很好,但这完全取决于你的哈希,如果哈希存储在数据库中,那么你可以得到实际的字符串。

其他回答

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

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

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

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

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

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

从技术上讲,这是“可能的”,但在非常严格的条件下(彩虹表,基于用户密码在哈希数据库中的可能性非常小的暴力强制)。

但这并不意味着它是

可行的 或 安全

你不想“反转”一个MD5哈希。使用下面列出的方法,您将永远不需要。“逆转”MD5实际上被认为是恶意的——一些网站提供了“破解”和暴力破解MD5哈希的能力——但它们都是包含字典单词、以前提交的密码和其他单词的庞大数据库。有一个非常小的机会,它将有你需要反向的MD5哈希。如果你已经咸MD5哈希-这也不会工作!:)


使用MD5哈希的登录方式应该是: 在注册过程中: 用户创建密码->密码使用数据库存储的MD5 ->哈希值进行哈希

在登录: 用户输入用户名和密码->(用户名选中)密码使用MD5哈希->哈希与数据库中存储的哈希进行比较

当需要“丢失密码”时: 2个选择:

用户发送一个随机密码来登录,然后在第一次登录时修改它。

or

用户会被发送一个链接来更改他们的密码(如果你有安全问题/等等),然后新密码被散列,并用数据库中的旧密码替换

MD5被认为是坏的,不是因为您可以从散列中获得原始内容,而是因为通过工作,您可以生成两个散列到相同散列的消息。

不能取消MD5哈希。

您可以找到使用字典检索原始消息的在线工具。

在某些情况下,dictionary方法可能是无用的:

如果使用SALT消息散列消息 如果消息是哈希不止一次

例如,这里有一个MD5解密在线工具。