Asp.net mvc 4 使用simpleCrypto类在登录时解密密码失败

Asp.net mvc 4 使用simpleCrypto类在登录时解密密码失败,asp.net-mvc-4,authentication,Asp.net Mvc 4,Authentication,我在登录时解密密码。但登录失败,因为crypto.Compute每次都生成新密码,这与数据库中存储的加密密码不同。 这是我的密码。 控制器 [HttpPost] public ActionResult LogIn(Authentication log) { var crypto = new SimpleCrypto.PBKDF2(); Login ULogin = new Login();

我在登录时解密密码。但登录失败,因为crypto.Compute每次都生成新密码,这与数据库中存储的加密密码不同。 这是我的密码。 控制器

    [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();
    }

您似乎没有利用salt功能


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

您似乎没有使用salt功能


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

您能举个例子说明它在创建密码时传递相同的值,然后在比较密码时做什么吗?您能举个例子说明它在创建密码时传递相同的值,然后在比较密码时做什么吗?