如何检查输入的旧密码(在更改密码页面中)是否正确?

时间:2013-12-24 16:05:32

标签: ado.net

string str = "select password from registration";
                    if (str == textBox1.Text)
                    {

                        string str1 = "Update registration set password='" + textBox2.Text + "' where password='" + textBox1.Text + "' ";
                        SqlCommand cmd1 = new SqlCommand(str1, con);
                        con.Open();
                        cmd1.ExecuteNonQuery();
                        con.Close()
                        MessageBox.Show("password changed");
                        this.Hide();
                     }

2 个答案:

答案 0 :(得分:0)

最简单的方法是取出旧密码,然后进行必要的检查。如果密码不同,并且新密码符合必要的安全标准,则保存。如果数据库更新成功,则只显示成功方法。

如果您将密码存储为纯文本,则可能需要查看salting和哈希密码。在登录时,您对用户输入进行加盐和散列,并将其与数据库中的散列版本进行比较。

答案 1 :(得分:0)

你在前两行代码中尝试了什么?

string str = "select password from registration";
if (str == textBox1.Text)

在后面的代码中,您似乎期望textBox1中的旧密码。您最好将查询结果存储在str而不是查询本身。

我假设您将密码存储为纯文本,注册表包含用户和密码行。

注册

userid           Password
---------------------------
  1              abcdef
  2              xyzxyz

所以你应该做类似

的事情
int userId = 1; // userid of the user for which you want to change password
string str = "SELECT password from registration WHERE userid="+userid;

SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader reader = cmd.ExecuteReader();
string oldPassword = string.Empty;
if (reader.HasRows)
{
  while (reader.Read())
  {
     oldPassword = reader["password"].ToString() ;
   }
}

//now you can continue with other code with little modification is update query

 if (oldPassword == textBox1.Text)
 {

   string str1 = "Update registration set password='" + textBox2.Text + "' where password='" + textBox1.Text + "' and userid= " + userId;
   SqlCommand cmd1 = new SqlCommand(str1, con);
   con.Open();
   cmd1.ExecuteNonQuery();
   con.Close()
   MessageBox.Show("password changed");
   this.Hide();
 }