Это способ сохранить пароль в базе данных?

Есть несколько способов (даже здесь, в SO), и все они упоминают, что лучший способ сохранить пароль в базе данных - это сохранить не пароль, не взломанный пароль, а для хранения хэша соленого пароля .

У меня простой вопрос: нужно добавить код, это правильный путь?

string username = "myUsr";
string password = "myPwd";
DateTime createDate = DateTime.UtcNow;

// Salt it
string saltedPwd = String.Concat(password, createDate.Ticks.ToString());

// Hash it
HMACSHA1 hash = new HMACSHA1(Encoding.Unicode.GetBytes(Helper.EncryptKey));
string encodedPwd = Convert.ToBase64String(
                        hash.ComputeHash(Encoding.Unicode.GetBytes(saltedPwd)));

// Create User in the database
db.CreateUser(username, encodedPwd, createDate);

Таблица пользователей базы данных

user_id | username | password | create_date | last_access | active

и после входа в систему повторите процесс и проверьте, является ли encodedPwd такой же, как и предоставленный соленый, взломанный пароль.

Меня беспокоит только одно: это лучший способ солить пароль? Можно ли использовать дату создания (поскольку она всегда будет меняться, и я читал, что лучше всегда использовать разная соль каждый раз, когда мы кодируем пароль ...

Или должна быть соль совершенно другая переменная?

13
задан balexandre 25 March 2011 в 10:56
поделиться