在我的网站上,我使用md5加密作为密码。所以它在数据库中以加密形式保存。为了进行密码恢复,我该如何解密加密密码?
请帮助:)
答案 0 :(得分:9)
正如其他人所描述的那样,你不能轻易'解密'MD5哈希。
我想进行密码恢复的最佳方式是:
用户可以请求密码恢复 通过提供他的电子邮件地址(它应该是唯一的,以便用户可以通过电子邮件地址识别)。
通过电子邮件将电子邮件发送到他的地址 包含唯一哈希的链接(哪个 你在发送时生成了 发送电子邮件并将其保存到数据库中。
当用户点击链接时(和 当然,检查唯一的哈希 与db中的那个相等) 你可以展示一个让他们的表格 选择不同的密码。
有些人使用的另一种方法是简单地询问电子邮件地址,生成新密码并将其发送给用户。这个问题是,只知道您的电子邮件地址的人可以请求更改密码。他不会知道新的通行证,你会通过电子邮件得到它,但对用户来说仍然非常不方便。
答案 1 :(得分:6)
MD5是基于散列的加密。这意味着,没有办法取回原始价值。您创建了一些原始数据的“校验和”。您可以使用MD5算法加密其他内容,然后将其与MD5的数据版本进行比较,但您永远无法取回原始版本。
它类似于我说:5 + 3 + 2 = 10.原始数据是5,3和2.但是“哈希”是10.没有办法从哈希中获取原始数据,但如果有人提供了正确的输入(5,3,2),我可以对其进行哈希处理,并确认它与我在文件中的哈希值相匹配,10。
答案 2 :(得分:5)
我认为MD5是一种单向散列算法。这意味着,一旦加密,数据就无法解密。 (我确信一个好的黑客会不同意)
无论如何,对于密码,您可以将密码的加密版本保存在数据库中。当用户尝试登录时,使用相同的MD5算法加密输入的密码,并将密码的加密版本与存储在数据库中的加密密码进行比较。
一旦您对此方法感到满意,您就可以开始考虑将哈希添加到哈希密码的概念。
此外,还有其他哈希算法,而不仅仅是MD5。如果您使用的是.NET,那么框架中就有一堆,例如SHA512Managed。每一个都有其权衡,例如速度哈希,安全等。选择一个解决您的特定问题。
答案 3 :(得分:4)
您无法解密md5密码!唯一的办法就是蛮力吧! 如果你想进行密码恢复,可以通过电子邮件(或任何其他方式)将随机字符串发送给用户并设置为md5'd密码......只是一个想法
修改强> 如果您可以解密密码,为什么要对密码进行加密以保证其安全?没有意义! - >你可以基本上保留未加密的密码!
答案 4 :(得分:1)
这并不容易,但最好的办法是使用rainbow table,因为MD5确实有vulnerabilities。
有几个online versions,您可能会或可能不会信任(或工作)。
答案 5 :(得分:1)