2 database encryption passwords md5
可能重复:
是否可以解密md5哈希?
在我的网站上,我使用md5加密作为密码.所以它在数据库中以加密形式保存.为了进行密码恢复,我该如何解密加密密码?
请帮忙 :)
正如其他人所描述的那样,你不能轻易地"解密"MD5哈希.
我想进行密码恢复的最佳方法是这样的:
用户可以通过提供他的电子邮件地址来请求密码恢复(它应该是唯一的,以便可以通过电子邮件地址识别用户).
电子邮件将发送到他的地址,其中包含一个包含唯一哈希的链接(您在发送电子邮件并将其保存到数据库时生成).
当用户单击链接时(当然,检查唯一哈希值与数据库中的哈希值相等),您可以显示一个表单,让他们选择不同的密码.
一些人使用的另一种途径是简单地询问电子邮件地址,生成新密码并将其发送给用户.这个问题是,只知道您的电子邮件地址的人可以请求更改密码.他不会知道新的通行证,你会通过电子邮件得到它,但对用户来说仍然非常不方便.
MD5是基于散列的加密.这意味着,没有办法取回原始价值.您创建了一些原始数据的"校验和".您可以使用MD5算法加密其他内容,然后将其与MD5的数据版本进行比较,但您永远无法取回原始版本.
它类似于我说:5 + 3 + 2 = 10.原始数据是5,3和2.但是"哈希"是10.没有办法从哈希中获取原始数据,但是如果有人提供了正确的输入(5,3,2),我可以对其进行哈希处理,并确认它与我在文件中的哈希值相匹配,10.
我认为MD5是一种单向散列算法.这意味着,一旦加密,数据就无法解密.(我相信一个好的黑客会不同意)
无论如何,对于密码,您可以将密码的加密版本保存在数据库中.当用户尝试登录时,使用相同的MD5算法加密输入的密码,并将密码的加密版本与存储在数据库中的加密密码进行比较.
一旦您对这种方法感到满意,您就可以开始考虑将哈希添加到哈希密码的概念.
此外,还有其他哈希算法,而不仅仅是MD5.如果您使用的是.NET,那么框架中就有一堆,例如SHA512Managed.每一个都有其权衡,例如速度哈希,安全性等.选择一个解决您的特定问题.