2009-12-21 105 views
0

在我的应用程序中,密码是加密的,如果用户忘记密码,则无法恢复它。现在我们取消该用户帐户并创建一个新帐户。现在我想要一个适当的方法来恢复密码。登录是使用Asp.net配置工具完成的。我怎样才能使用这个恢复我的密码?有没有其他的选择呢?我如何解密数据库中的密码?使用Asp.net密码恢复

+0

您是否使用标准的ASP.NET成员资格提供程序? – RickNZ 2009-12-21 06:23:36

回答

3

的想法是,没有人可以解密密码(包括数据库所有者)。通常情况下,您会生成一个新密码&将其发送给用户,并将其加密&将其放入数据库。

0

你如何加密你的密码?它是单向加密,只能使用正确的密码解密?如果是这样 - 比赛结束。

您可以更改加密方法,以便使用密钥进行解密(不是密码,它可以是例如用户ID,出生日期和他输入的秘密字词的组合,它保存在未加密的数据库中)。

随后,密码可以使用密钥,每个人都会很乐意被解密。

+0

我该怎么做?请咨询。 – Nandini 2009-12-21 06:15:08

+0

阅读关于使用Rijndael算法的aes加密。这很容易。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx – Faruz 2009-12-21 06:30:13

1

正如其他人所说,有希望密码是在数据库中加密的一种方式。许多网站使用恢复密码的一种方法是生成用户主用户名和电子邮件地址的散列。让他们提供这些信息,然后对其进行哈希。如果匹配,则生成一个新的随机密码,对其进行加密并覆盖旧密码。将用户的新密码通过电子邮件发送给他们最初提供的电子邮件地址,并在数据库中标记行以强制他们在下次登录时更改密码(通常在手工生成密码时完成)。

了几个网站,我知道让你找回密码,我认为他们使用可逆的(即对称)密钥算法生成的密码。为了做到这一点,并且没有它可供网站所有者使用,您需要用户提供两条信息(用户名和盐只为他们所知),这些信息用于保护登录信息并可用于恢复它。

你可以看一下MSDN上的对称密钥加密的更多信息。真的,我推荐使用这种技术对,如果可能的话,生成一个新的密码是可取的。