データベースにユーザーのパスワードを格納する必要があるASP.NETプログラムを作成しています。しかし、データベースのパスワードとユーザー入力のパスワードを比較すると、パスワードが一致しません。ユーザーのパスワードが正しい場合でも。ASP.NET MVCのパスワードを比較して比較する方法
パスワードハッシュ:
string PasswordSalt = Crypto.HashPassword(DateTime.Now.ToString());
string hashPassword = Crypto.HashPassword(formcollection["PassWord"]); //Hash User PassWord
user.PassWord = Crypto.HashPassword(PasswordSalt + hashPassword);//Add Salt to Password For Futher Security
user.PassWordSalt = PasswordSalt;
パスワード検証:
Users ThisUser = Users.UsersGetByEmail((string)Session["email"]);
string checkpassword = ThisUser.PassWord;
//User Inputed password.
string password = user.PassWord;
if (password != null)
{
//Need to fix.
string encrypt_password = Crypto.HashPassword(password);
string salted_password = Crypto.HashPassword(ThisUser.PassWordSalt + encrypt_password);
//bool does_password_match = Crypto.VerifyHashedPassword(checkpassword, password);
if (checkpassword == salted_password)
{
//Check if the inputed password matches the password from the Database.
//Remember to give session based on the user_id.
Session["user_id"] = ThisUser.Id;
return RedirectToAction("Promise");
}
else
{
ModelState.AddModelError("PassWord", "Wrong Password, Please Enter Correct Password");
return View(user);
}
あなたはasp IDを使用して調べましたか?これらのすべてが、多くの組み込みメソッドであなたの世話をしています –
セキュリティに関するルール1:自分でビルドしないでください:) – oerkelens