我正在开发一个应用程序,员工将首先通过输入登录 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();
}