1

我偶然发现了下面的代码片段,它加密了用户的密码。这就是我想要做的,因为我不想在没有任何加密的情况下将用户的密码存储在数据库中。

这对于我想要实现的目标来说工作得很好,但我的问题是:如何取消加密以确保他们在密码框中输入的值匹配?

// Hash the password details of the user!
private static string CreatePasswordHash(string pwd, string salt)
{
  string saltAndPwd = string.Concat(pwd, salt);
  string hashedPwd = 
    FormsAuthentication.HashPasswordForStoringInConfigFile(saltAndPwd, "SHA1");
  hashedPwd = string.Concat(hashedPwd, salt);
  return hashedPwd;
}

我这样称呼上面

string password = CreatePasswordHash(TxtPassword.Text, "1579");

然后密码变成这样:566DAB495AD0747B49865F9177E430DFAD63CA281579

那么我该如何取消加密呢?

感谢您的时间。

4

2 回答 2

8

首先,不要尝试编写自己的密码存储系统。你会弄错并建立一个不安全的系统。聘请专门从事此类工作的专家,让他们编写系统,并培训您正确使用和维护系统。

其次,该代码的全部意义在于您不可能找到用户的密码。他们的密码与您无关。加盐哈希的目的是建立一个验证系统,您不必首先存储他们的密码,但您仍然可以验证他们是否知道他们的密码。

要了解它是如何工作的,请阅读我关于该主题的四部分系列文章:

http://blogs.msdn.com/b/ericlippert/archive/tags/salt/

但同样不要尝试自己这样做。如果您需要从事安全工作,请聘请在该领域拥有数十年经验的专家。

于 2012-04-28T15:12:50.690 回答
5

哈希的要点是没有人可以解密它!

当用户尝试登录时,您对输入的密码进行哈希处理,然后将哈希值与数据库中的内容进行比较。如果哈希匹配,则密码正确。

于 2012-04-28T12:50:15.737 回答