我正在处理一个应用程序,其中员工将首先通过输入登录名和密码注册到系统中。密码被哈希和腌制并存储在登录表中(两个值都与loginID值一起存储)。但是,当我浏览代码时,我登录到应用程序(在注册过程之后),散列值和盐值不匹配。无法将散列和盐密码与数据库值进行匹配
如何在登录系统时验证用户的密码?
加密功能:
protected static void EncryptPassword(eWebEmployee oEmp)
{
// Create Hash & Salt
sysSecurity oSecurity = new sysSecurity();
oEmp.EmpPasswordSalt = oSecurity.CreateSalt(5);
oEmp.EmpPasswordHash = oSecurity.CreatePasswordHash(oEmp.EmpPasswordSalt, oEmp.EmpPassword);
}
数据库调用:
oDbConn.Open();
DbDataReader oDbDataReader = oDbCommand.ExecuteReader();
while (oDbDataReader.Read())
{
if (!oDbDataReader.IsDBNull(0) && !oDbDataReader.IsDBNull(1))
{
if (oEmp.EmpPasswordSalt == oDbDataReader.GetString(1)
&& oEmp.EmpPasswordHash == oDbDataReader.GetString(0))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
oDbConnection.Close();
}
完全脱离主题,但为什么每个变量都以o开头?关于主题:你没有在这里展示足够的代码来弄清楚发生了什么。 – aquinas 2012-07-11 14:03:43
@aquinas ...(1)来自以前的开发人员的代码; (2)将更新后显示更多的代码,但我认为下面的2个答案钉住了它。 – DotNetRookie 2012-07-11 14:05:33