ASP.NET: SHA1 + хеширование соляного пароля на нескольких серверах - PullRequest
2 голосов
/ 08 февраля 2011

Итак, Дэвид Хейден опубликовал в своем блоге подход (http://davidhayden.com/blog/dave/archive/2004/02/16/157.aspx) для создания соли и хэширования пароля пользователя, взяв необработанный пароль пользователя и сгенерированную соль и используя SHA1 для хэширования значения.

Затем я сохраняю соль и хешированный пароль в базе данных.

В настоящее время веб-сайт сбалансирован по нагрузке, поэтому мне было интересно, будет ли результирующее значение хеша одинаковым для обоих серверов.

Вот фрагмент кода, размещенный в блоге Дэвида Хейдена:

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");

Ответы [ 3 ]

3 голосов
/ 08 февраля 2011

Я думаю, что ключевой вопрос, который вы задаете здесь, заключается в том, является ли алгоритм SHA1 одинаковым, независимо от того, на каком сервере он работает.В таком случае ответ - да.

Предположительно, вы храните сгенерированную соль где-нибудь, чтобы все серверы могли получить к ней доступ, вместе с хэшем пароля?Таким образом, метод, используемый для генерации соли, не обязательно должен быть согласованным на разных серверах.

1 голос
/ 08 февраля 2011

Этот метод будет использовать только параметры, переданные в него.
Не беспокойтесь об этом;это будет работать.

0 голосов
/ 08 февраля 2011

"Для решения этой проблемы значения validationKey и decryptionKey должны быть идентичны на всех компьютерах в веб-ферме."http://msdn.microsoft.com/en-us/library/ff647070.aspx#pagexplained0002_webfarmscenarios

...