2

だから、私はデビッド・ヘイデンが彼のブログ(http://davidhayden.com/blog/dave/archive/2004/02/16/157.aspx)に投稿したアプローチで、ソルトを作成し、ユーザーのパスワードを取得してユーザーのパスワードをハッシュします生のパスワードと生成されたソルト、およびSHA1を使用して値をハッシュします。

次に、ソルトとハッシュ化されたパスワードをデータベースに保存します。

Webサイトは現在負荷分散されているため、結果のハッシュ値が両方のサーバーで同じになるかどうか疑問に思いました。

DavidHaydenのブログに投稿されたコードのスニペットは次のとおりです。

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の値がWebファーム内のすべてのコンピューターで同一である必要があります。」 http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_webfarmscenarios

于 2011-02-08T19:10:55.663 に答える