void CreatePasswordHashNew(string userName, string password) {
byte[] passwordHash, passwordSalt;
using(var hmac = new System.Security.Cryptography.HMACSHA512()) {
passwordSalt = hmac.Key;
passwordHash = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(password));
}
using(var db = new Context()) {
db.Database.ExecuteSqlCommand("UPDATE [User] SET PasswordHash = {0}, PasswordSalt = {1} WHERE UserName = {3}", passwordHash, passwordSalt, DateTime.Today, userName);
}
}
Потом из базы беру соль и подставляю под этот код вместо ключа, но получаю уже другой хэш. В чем проблема? Возможно что в бд тип указан не varchar, а binary, или что?
Целая куча вариантов ошибки может быть. Лучше в дебаге посмотри что нагенерил и что записалось в базу, а затем аналогично для проверки пароля. Что вытащил из базы и с чем сравниваешь
Обсуждают сегодня