Asp.net MVC - Как хэшировать пароль

Как мне хэшировать ввод пользователя (пароль) в базу данных, а затем читать хешированный пароль при входе в систему?

Я считаю, что решение заключается в хешировании пароля при регистрации, где пароль сохраняется как хешированный внутри БД. Позже при входе в систему он должен снять хеш и сравнить свой пароль с вводом пароля пользователя. Но я не знаю, как это сделать.

Я разрешил пароль иметьnvarchar(MAX)в дб, так как хешированный пароль обычно длинный.

        [Required]
        [StringLength(MAX, MinimumLength = 3, ErrorMessage = "min 3, max 50 letters")]
        public string Password { get; set; }

Регистр:

        [HttpPost]
        public ActionResult Register(User user) {
            if (ModelState.IsValid) {

                        var u = new User {
                            UserName = user.UserName,                               
                            Password = user.Password
                        };

                        db.Users.Add(u);
                        db.SaveChanges();

                    return RedirectToAction("Login");
                }
            }return View();    
        }

Авторизоваться:

  public ActionResult Login() {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Login(User u) {
        if (ModelState.IsValid) 
        {
            using (UserEntities db = new UserEntities()) {

                //un-hash password?

                var v = db.Users.Where(a => a.UserName.Equals(u.UserName) && a.Password.Equals(u.Password)).FirstOrDefault();
                if (v != null) {

                    return RedirectToAction("Index", "Home"); //after login
                }
            }
        }return View(u);
    }

Я использую базу данных в первую очередь.

Ответы на вопрос(1)

Ваш ответ на вопрос