2009-04-11 6 views
2

Я использую эту функцию для генерации хэша для пароля и сохранения его в базе данных (SQL Server).Какой формат является результатом HashPasswordForStoringInConfigFile() и как сохранить его лучше всего?

код выглядит следующим образом:

byte[] saltBytes = new byte[16]; 
new RNGCryptoServiceProvider().GetBytes (saltBytes); 
string salt = Convert.ToBase64String (saltBytes); 
string saltedPasswordHash = 
FormsAuthentication.HashPasswordForStoringInConfigFile (password + salt, FormsAuthPasswordFormat.SHA1.ToString()); 

Теперь вопрос: в каком формате выход HashPasswordForStoringInConfigFile() - я хранить его в символьном (длина) или NCHAR (длина)?

Или есть ли другой предпочтительный способ хранения хэша, может быть, не как строка?

Любые вводные и полунаправленные комментарии приветствуются.

+0

Для записи, это не лучший способ сохранить хэш пароля. См. [Как безопасно использовать хэш-пароли?] (Https://security.stackexchange.com/q/211/39623) и, если потребуется, мой ответ на [Drop in replacement for FormsAuthentication.HashPasswordForStoringInConfigFile?] (Https: // stackoverflow .com/q/13527277/1967612), в котором подробно описаны варианты перехода от этого к PBKDF2, все в .NET - по существу, либо переведите все в RFC2898DeriveBytes (pw, соль, итерации), все в RFC2898DeriveBytes (HashPasswordForStoringInConfigFile (pw, MD5 "), соль, итерации) или обновить пользователей при входе в систему –

ответ

1

SQL Server поддерживает двоичные столбцы (binary(len) и varbinary(len)), предназначенные для хранения двоичных данных. Возможно, вам захочется использовать их. В этом случае вы можете использовать классы, такие как System.Security.Cryptography.SHA512Managed, а не HashPasswordForStoringInConfigFile

1

Поскольку вы используете C#, возможно, стоит рассмотреть использование решения хэширования BCrypt. Он разработан по алгоритму шифрования BCrypt ребятами, которые пишут OpenBSD и являются очень сильным алгоритмом. Лучше всего то, что вам не нужно беспокоиться о солях (но они есть), и вы со временем можете солить соль.

BCrypt.net - Strong Password Hashing for .NET and Mono

+0

BCrypt - хороший способ хранения хэша паролей, если вы используете достаточно высокий коэффициент работы. PBKDF2 и Scrypt являются двумя другими текущими соперниками, также с достаточно высоким коэффициентом итерации/коэффициентом работы. Во всех случаях, @LeakyCode прав - BINARY (len) colunns для соли и хешей являются наиболее эффективными. –

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

  • Нет связанных вопросов^_^