2

所以,我是 David Hayden 在他的博客 (http://davidhayden.com/blog/dave/archive/2004/02/16/157.aspx) 上发布的方法,通过获取用户的密码来创建盐和散列用户的密码原始密码和生成的盐,并使用 SHA1 对值进行哈希处理。

然后我将盐和散列密码存储在数据库中。

该网站目前是负载平衡的,所以我想知道两台服务器的结果哈希值是否相同。

以下是 David Hayden 博客上发布的代码片段:

private static string CreateSalt(int size)
  {
   //Generate a cryptographic random number.
   RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
   byte[] buff = new byte[size];
   rng.GetBytes(buff);

   // Return a Base64 string representation of the random number.
   return Convert.ToBase64String(buff);
  }

private static string CreatePasswordHash(string pwd, string salt)
  {
   string saltAndPwd = String.Concat(pwd, salt);
   string hashedPwd =
    FormsAuthentication.HashPasswordForStoringInConfigFile(
    saltAndPwd, "sha1");

   return hashedPwd;
  }

我问的原因是这段代码使用了代码片段:

FormsAuthentication.HashPasswordForStoringInConfigFile(
        saltAndPwd, "sha1");
4

3 回答 3

3

我认为您在这里提出的关键问题是 SHA1 算法是否与它运行的任何服务器相同。在这种情况下,答案是肯定的。

大概您将生成的盐与密码哈希一起存储在所有服务器都可以访问的地方?因此用于生成盐的方法不需要在服务器之间保持一致。

于 2011-02-08T19:08:54.250 回答
1

此方法将仅使用传递给它的参数。
别担心;它会起作用的。

于 2011-02-08T19:09:13.500 回答
0

“要解决这个问题,网络场中所有计算机上的validationKey 和decryptionKey 值必须相同。” http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_webfarmscenarios

于 2011-02-08T19:10:55.663 回答