我正在處理一個應用程序,其中員工將首先通過輸入登錄名和密碼註冊到系統中。密碼被哈希和醃製並存儲在登錄表中(兩個值都與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