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

ソルト機能を利用しているようには見えません。

パスワード ハッシュを生成するときに、salt を指定しないと、ライブラリが生成して使用します。このソルトをハッシュ化されたパスワードとともに保存し、ユーザーを検証するためにハッシュで使用する必要があります。これを行わないと、ハッシュを生成しようとするたびに、まったく新しいソルトが生成されて使用されます。つまり、まったく異なるパスワード ハッシュが計算されます。

于 2013-10-09T04:43:27.607 に答える