您好,我有一个问题,我的网站有登录和注册页面。它运作良好,并将凭据正确存储在我的数据库中。 (https://imgur.com/uuBvhQP)现在,我需要能够从c#登录表单中验证电子邮件和密码,但是问题是密码被散列了,我不知道该如何处理表单。 我从未在程序中使用过哈希密码,因此到目前为止,它的工作方式是我的winform将从@email和@pass中获取值并将其与未哈希密码的db进行比较。
private void db_connection()
{
try
{
conn = "my conn string";
connect = new MySqlConnection(conn);
connect.Open();
}
catch (MySqlException e)
{
throw;
}
}
private bool validate_login(string email, string pass)
{
db_connection();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select email, password from users where email=@user and password=@pass";
cmd.Parameters.AddWithValue("@email", user);
cmd.Parameters.AddWithValue("@pass", pass);
cmd.Connection = connect;
MySqlDataReader login = cmd.ExecuteReader();
if (login.Read())
{
connect.Close();
return true;
}
else
{
connect.Close();
return false;
}
}
private void button1_Click(object sender, EventArgs e)
{
string user = username.Text;
string pass = password.Text;
if (user == "" || pass == "")
{
MessageBox.Show("Empty Fields Detected ! Please fill up all the fields");
return;
}
bool r = validate_login(user, pass);
if (r)
MessageBox.Show("Correct Login Credentials");
else
MessageBox.Show("Incorrect Login Credentials");
}
答案 0 :(得分:0)
正如其他人在评论中已经建议的那样,您使用相同的算法来哈希您已经在注册表中使用的用户输入。然后将哈希输入与数据库中的哈希数据进行比较。
请不要将密码以明文形式存储或使用弱算法进行哈希处理。许多用户总是使用相同的密码,如果有人可以访问您的数据库,这显然是一件非常糟糕的事情。