Asp.net mvc 简单的自定义注册/登录系统如何散列和检索密码

Asp.net mvc 简单的自定义注册/登录系统如何散列和检索密码,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我已经创建了一个简单的注册/登录系统,现在当用户注册时,它只在数据库中存储他们的普通密码。我想知道,当他们登录时,我如何将其散列,如何将其取消散列,并将其与他们输入的内容进行比较 我的users表/模型类中只有用户名和密码 用户控制器 你不能“取消”散列密码,这是一种单向算法。为了进行比较,您对登录密码运行相同的算法,然后将其与存储在Register方法中的值进行比较。如果要在应用程序中提供登录机制,可以使用asp.net标识。你可以查一下 // GET: Register User publi

我已经创建了一个简单的注册/登录系统,现在当用户注册时,它只在数据库中存储他们的普通密码。我想知道,当他们登录时,我如何将其散列,如何将其取消散列,并将其与他们输入的内容进行比较

我的users表/模型类中只有用户名和密码

用户控制器
你不能“取消”散列密码,这是一种单向算法。为了进行比较,您对登录密码运行相同的算法,然后将其与存储在Register方法中的值进行比较。如果要在应用程序中提供登录机制,可以使用asp.net标识。你可以查一下
// GET: Register User
public ActionResult Register(User user)
{
    if (ModelState.IsValid)
    {
        using (UserContext db = new UserContext())
        {
            db.Users.Add(user);
            db.SaveChanges();
        }
        ModelState.Clear();
    }
    return View();
}

// POST: Login User
[HttpPost]
public ActionResult Login(User user)
{
    using (UserContext db = new UserContext())
    {
        var usr = db.Users.SingleOrDefault(u => u.Username == user.Username && u.Password == user.Password);
        if (usr != null)
        {
            Session["UserID"] = usr.Username.ToString();
            return RedirectToAction("Index", "Profile");
        }
        else
        {
            ModelState.AddModelError("", "Username or Password Incorrect");
        }
    }
    return View();
}