Итак, Дэвид Хейден опубликовал в своем блоге подход (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");