我正在使用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");
}
该应用根据用户在注册时提供的电子邮件检索用户密码。我无法弄清楚的是如何将散列密码与用户提供的密码进行比较。
答案 0 :(得分:0)
为什么您的密码需要模型类型和模型本身作为输入?你想要做的是使用一个hasher,总是在相同的密码输入下返回相同的结果(或者,现在,给定相同的两个输入:密码和随机存储的SALT,你存储在一起密码)
以下是如何正确执行此操作:https://crackstation.net/hashing-security.htm
换句话说,扔掉你当前的哈希,并制作一个只需要输入密码(理想情况为盐)的密码。使用与“登录”密码哈希相同的代码行来散列新创建的密码 - 然后将登录哈希值与存储的哈希值进行比较,以查看它们是否匹配。