【发布时间】:2012-07-11 03:45:18
【问题描述】:
我正在开发一个应用程序,员工将首先通过输入登录 ID 和密码注册到系统。密码经过散列和加盐处理并存储在登录表中(这两个值都与 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... (1) 以前开发者的代码; (2) 将更新帖子以显示更多代码,但我认为下面的 2 个答案已经解决了。