2011-02-08 2 views
2

Итак, я подход Дэвид Хейден, размещенный в его блоге (http://davidhayden.com/blog/dave/archive/2004/02/16/157. aspx), чтобы создать соль и хэш пароля пользователя, взяв сырой пароль пользователя и сгенерированную соль и используя SHA1 для хэширования значения.ASP.NET: 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"); 
+0

Не ограничивайте соль солью символами ASCII. – SLaks

+1

Мне нравится «Rfc2898DeriveBytes» с пользователем и солью для каждого приложения. – CodesInChaos

+0

@ Код: символы ASCII чаще встречаются в таблицах радуги. – SLaks

ответ

3

Я думаю, ключевой вопрос ваш запрашиваемая вот если алгоритм SHA1 будет таким же, как на сервере, на котором он запущен. В этом случае ответ «да».

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

1

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

0

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

+1

Это другая проблема. – SLaks

+0

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

+0

Спасибо! Это была моя забота изначально, но рада узнать, что это не имеет значения. – Abe

Смежные вопросы