[Sql-Server], какой тип данных использовать для значений соли и хеш-пароля, и какой длины?
Я генерирую значения соли и хеша из своих паролей, используя
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
Hash: E778AF0DC5F2953A00B35B35D80F6262CDBB8567
Ответы
Ответ 1
ASPNET_DB говорит, что это - не может пойти не так.
Password nvarchar(128) NOT NULL,
PasswordSalt nvarchar(128) NOT NULL,
в то время как 128 может показаться много, различные типы шифрования могут привести к большим строкам, чем вы начали с. Нет абсолютно никакой причины не следить за лидерами очень умных людей, которые тратят тысячи человеко-часов на разработку системы членства в asp.net.
Ответ 2
Мы сохраняем наши пароли как двоичный SHA512 хэш