【发布时间】:2011-07-14 02:23:27
【问题描述】:
在我的网站中,我对密码使用 md5 加密。所以它以加密形式保存在数据库中。进行密码恢复,如何解密加密的密码??
请帮忙:)
【问题讨论】:
-
您没有“解密”密码。还使用 MD5 对传入密码进行哈希处理,如果该哈希与数据库中的哈希匹配,则密码相同。您还应该使用“盐”。
标签: database passwords md5 encryption
在我的网站中,我对密码使用 md5 加密。所以它以加密形式保存在数据库中。进行密码恢复,如何解密加密的密码??
请帮忙:)
【问题讨论】:
标签: database passwords md5 encryption
正如其他人所描述的那样,您不能轻易“解密”一个 MD5 哈希。
我想最好的密码恢复方法是这样的:
用户可以请求密码恢复 通过提供他的电子邮件地址(它应该是唯一的,以便可以通过电子邮件地址识别用户)。
会向他的地址发送一封电子邮件,其中包含 包含唯一哈希的链接(其中 您在发送时生成的 电子邮件并将其保存到数据库中)。
当用户点击链接时(以及 当然检查唯一的哈希 与数据库中的相同) 你可以展示一个表格,让他们 选择一个不同的密码。
有些人使用的另一种方法是简单地询问电子邮件地址,生成新密码并将其发送给用户。这个问题是只知道您的电子邮件地址的人可以请求更改密码。他不会知道新的通行证,你会通过电子邮件得到它,但对用户来说仍然很不方便。
【讨论】:
MD5 是一种基于散列的加密。这意味着,没有办法取回原始值。您已经创建了原始数据的“校验和”。您可以使用 MD5 算法加密其他内容,然后将其与 MD5 版本的数据进行比较,但您永远无法取回原始数据。
这类似于我说的:5 + 3 + 2 = 10。原始数据是 5、3 和 2。但是“哈希”是 10。没有办法从哈希中获取原始数据,但是如果有人提供了正确的输入( 5, 3, 2 ),我可以对其进行哈希处理,并确认它与我存档的哈希值 10 匹配。
【讨论】:
我认为 MD5 是一种单向哈希算法。这意味着一旦你加密它,数据就无法解密。 (但我相信优秀的黑客会不同意)
无论如何,对于密码,您可以将密码的加密版本保存在数据库中。当用户尝试登录时,使用相同的 MD5 算法对输入的密码进行加密,并将密码的加密版本与数据库中存储的加密密码进行比较。
一旦您对这种方法感到满意,您就可以开始研究在散列密码中添加盐的概念。
此外,除了 MD5 之外,还有其他散列算法。如果您使用的是 .NET,那么框架中有一堆,例如 SHA512Managed。每一种都有其权衡,例如散列速度、安全性等。选择一种可以解决您的特定问题的方法。
【讨论】:
您无法解密 md5 密码!唯一的办法就是暴力破解! 如果您想恢复密码,请通过电子邮件(或任何其他方式)将随机字符串发送给用户并设置为 md5 密码......只是一个想法
编辑: 如果可以解密,为什么要加密密码以确保其安全?没有意义! -> 你基本上可以不加密密码!
【讨论】:
这并不容易,但最好使用rainbow table,因为MD5 确实有vulnerabilities。
有几个online versions,您可能信任也可能不信任(或工作)。
【讨论】:
【讨论】: