2017-01-02 8 views
0

私はasp.netコア・レザー・エンジンを使用しています。私は私のdbに保存されているパスワードのハッシュを持っています。ユーザーがパスワードを入力したときと比較するにはどうすればよいですか。ハッシュされたパスワードとユーザ入力との比較c#

パスワードをハッシュした方法は次のとおりです。

[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

ユーザーが入力したパスワードをハッシュし、この結果をデータベースのものと比較する必要があります。 – Phiter

+0

@PhiterFernandes、どのように私はユーザーの入力パスワードをハッシュするか、またはdbからのパスワードをunhashしますか? – Aaron

+0

ユーザーのパスワードを解読することはできません。ユーザー入力をハッシュするためにdbパスワードをハッシュするのと同じ方法を使用します。 – Phiter

答えて

0

なぜパスワードハッシャーは入力としてモデルタイプとモデル自体を必要としますか?あなたがしたいのは、常には、同じパスワード入力で同じ結果を返すハッシャーを使用することです(または、最近は同じ2つの入力を与えられます:パスワードと一緒に保存するランダムに生成されたSALTとパスワード)

つまり、 https://crackstation.net/hashing-security.htm

をあなたの現在の調理人を捨てるだけ入力としてパスワード(理想的には塩を)取るものを作る:

は、ここでそれを正しく行う方法です。新しく作成されたパスワードは、「ログイン」パスワードをハッシュするのとまったく同じコード行でハッシュします。次に、ログインしたハッシュと格納されたハッシュを比較して一致するかどうかを確認します。

関連する問題