1

現在、パスワードをハッシュ化する可能性を探していますActionResult。具体的には、SHA512 メソッドをパブリックで呼び出してActionResult Edit(User user)、パスワードが変更された場合にパスワードをハッシュしたいと考えています。

Editメソッドのコードは次のとおりです。

    [HttpPost]
    public ActionResult Edit(User user)
    {
        if (ModelState.IsValid)
        {
            db.Entry(user).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(user);
    }

私は実際にASP.NETを初めて使用します。新しいパスワードがある場合、それをハッシュするためにこのメソッドを呼び出す方法が本当にわかりません。

    public static string SHA512(string value)
    {
        byte[] result;
        SHA512 sha512 = new SHA512Managed();
        result = sha512.ComputeHash(Encoding.Default.GetBytes(value));

        string hash = BitConverter.ToString(result).Replace("-", String.Empty); 

        return hash;
    }
4

1 に答える 1

0

モデルを更新するには、まずデータベースからモデルを取得してから、TryUpdateModel を呼び出します。次に、データベースから取得したユーザー ( ) の新しいパスワード ハッシュを追加してu保存します。

補足: アルゴリズムが高速であるため、SHA を使用したパスワードのハッシュは非常に不適切です。PBKDF2代わりに使用してみてください。

[HttpPost]
public ActionResult Edit(User user)
{
    var u = db.Users.Single(x => x.Id == user.Id);

    if (TryUpdateModel(u))
    {
        u.Password = SHA512(user.Password)
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(user);
}
于 2013-06-08T18:51:58.740 に答える