将散列密码与c#中的用户输入进行比较

时间:2017-01-02 23:20:15

标签: c# asp.net hash

我正在使用asp.net核心剃刀引擎。我有一个密码的哈希值,保存到我的数据库中。如何将其与用户输入密码进行比较。

这是我散列密码的方法。

[HttpPost]
        [Route("")]
        public IActionResult Register(Home model)
        {
            if(!ModelState.IsValid)
            {
                return View("Index", model);
            }
            PasswordHasher<Home> Hasher = new PasswordHasher<Home>();
            model.Password = Hasher.HashPassword(model, model.Password);
            userFactory.Add(model);
            TempData["message"] = false;

            return RedirectToAction("Index");
        }

该应用根据用户在注册时提供的电子邮件检索用户密码。我无法弄清楚的是如何将散列密码与用户提供的密码进行比较。

1 个答案:

答案 0 :(得分:0)

为什么您的密码需要模型类型和模型本身作为输入?你想要做的是使用一个hasher,总是在相同的密码输入下返回相同的结果(或者,现在,给定相同的两个输入:密码和随机存储的SALT,你存储在一起密码)

以下是如何正确执行此操作:https://crackstation.net/hashing-security.htm

换句话说,扔掉你当前的哈希,并制作一个只需要输入密码(理想情况为盐)的密码。使用与“登录”密码哈希相同的代码行来散列新创建的密码 - 然后将登录哈希值与存储的哈希值进行比较,以查看它们是否匹配。