Asp.net mvc 4 使用simpleCrypto类在登录时解密密码失败
我在登录时解密密码。但登录失败,因为crypto.Compute每次都生成新密码,这与数据库中存储的加密密码不同。 这是我的密码。 控制器Asp.net mvc 4 使用simpleCrypto类在登录时解密密码失败,asp.net-mvc-4,authentication,Asp.net Mvc 4,Authentication,我在登录时解密密码。但登录失败,因为crypto.Compute每次都生成新密码,这与数据库中存储的加密密码不同。 这是我的密码。 控制器 [HttpPost] public ActionResult LogIn(Authentication log) { var crypto = new SimpleCrypto.PBKDF2(); Login ULogin = new Login();
[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();
}
您似乎没有利用salt功能
生成密码哈希时,如果未指定salt,库将为您生成并使用一个salt。您应该将此salt与哈希密码一起存储,并在哈希中使用它来验证用户。如果您不这样做,每次尝试生成哈希时,都会生成并使用一个全新的salt,这意味着将计算一个完全不同的密码哈希。您似乎没有使用salt功能
生成密码哈希时,如果未指定salt,库将为您生成并使用一个salt。您应该将此salt与哈希密码一起存储,并在哈希中使用它来验证用户。如果你不这样做,每次你试图生成一个散列,一个全新的盐将生成和使用,这意味着将计算一个完全不同的密码散列。您能举个例子说明它在创建密码时传递相同的值,然后在比较密码时做什么吗?您能举个例子说明它在创建密码时传递相同的值,然后在比较密码时做什么吗?