Итак, я подход Дэвид Хейден, размещенный в его блоге (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");
Не ограничивайте соль солью символами ASCII. – SLaks
Мне нравится «Rfc2898DeriveBytes» с пользователем и солью для каждого приложения. – CodesInChaos
@ Код: символы ASCII чаще встречаются в таблицах радуги. – SLaks