1

我在登录时解密密码。但是登录失败,因为crypto.Compute每次都生成新的通行证,这不等于存储在db中的加密密码。这是我的代码。控制器

    [HttpPost]
    public ActionResult LogIn(Authentication log)
    {
             var crypto = new SimpleCrypto.PBKDF2();
             Login ULogin = new Login();

              if (ModelState.IsValid)
                  {
                      if 
                            (ULogin.Validate(log.Email,crypto.Compute(log.Password)))
            {
               // FormsAuthentication.SetAuthCookie(log.Email, log.RememberMe);
                return RedirectToAction("Index", "Home");



            }
        }
                else ModelState.AddModelError("", "Login failed..");



        return View();
    }
4

1 回答 1

1

您似乎没有使用盐功能。

当您生成密码哈希时,如果您没有指定盐,库将为您生成并使用一个。您应该将此盐与您的散列密码一起存储,并在您的散列中使用它来验证用户。如果你不这样做,每次你尝试生成哈希时,都会生成并使用一个全新的盐,这意味着将计算一个完全不同的密码哈希。

于 2013-10-09T04:43:27.607 回答