Я генерирую соленые и значения хэш-функции от своих паролей при помощи,
string salt = CreateSalt(TxtPassword.Text.Length);
string hash = CreatePasswordHash(TxtPassword.Text, salt);
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;
}
Какой тип данных Вы предложили бы для хранения этих значений в SQL-сервере? Любое предложение...
Соль:9GsPWpFD
Хеш:E778AF0DC5F2953A00B35B35D80F6262CDBB8567
ASPNET_DB говорит следующее - не ошибетесь.
Password nvarchar(128) NOT NULL,
PasswordSalt nvarchar(128) NOT NULL,
хотя 128 может показаться большим количеством, различные типы шифрования могут привести к получению строк большего размера, чем вы использовали вначале.Нет абсолютно никаких причин не следовать примеру очень умных людей, которые потратили тысячи человеко-часов на разработку системы членства asp.net.