Je suis en train d'écrire un programme ASP.NET où j'ai besoin de stocker le mot de passe des utilisateurs dans la base de données. Mais je reçois un mot de passe incompatibles quand je compare le mot de passe de la base de données avec le mot de passe d'entrée de l'utilisateur. Même si le mot de passe des utilisateurs est correct.Comment saler et comparer mot de passe dans ASP.NET MVC
Hashage:
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;
Mot de passe Vérification:
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);
}
avez-vous envisagé d'utiliser l'identité d'asp? tout cela est pris en charge pour vous avec beaucoup de méthodes intégrées –
Règle 1 sur la sécurité: ne le construisez pas vous-même :) – oerkelens