0

我看过类似的答案,但这是我正在寻找的,因为我没有从以前回答的问题中找到任何答案:

这是我的场景:我有一个表格[res_user]username, password, key_pin其中保存了用户名、加密密码和 4 位密码或密钥。

我正在用 C# 制作一个应用程序,它允许经理登录并从应用程序本身对数据库进行更改。

首先提示管理员使用用户名、密码和他们提供的 key_pin 登录。该 pin 将加密和解密进出数据库的密码。

现在我有一个用户名[manager]和一个加密密码已经保存在数据库中key_pin

如何确保登录的经理是正确的,这意味着我如何从 C# 应用程序比较数据库中的用户名和加密密码。

这些是我认为我将在应用程序本身中实现的步骤(在 c# 中使用 SQL 语法):

  1. 加密密码,

  2. 使用登录用户名获取数据库中保存的加密,以及

  3. 比较向应用返回是或否的加密以进行访问控制。

允许 5 次尝试登录。

这是我做的第一和第二部分:

try
{
   using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["STRING"].ConnectionString))
   {
     using (SqlCommand cmd = new SqlCommand("dbo.Res_User", con))
     {
       cmd.CommandText = "INSERT INTO Res_User(username, password, key_pin) SELECT '" + username + "' , dbo.fnEncDecRc4('" + pin + "','" + password + "'), '" + pin + "'";
       con.Open();
       cmd.ExecuteNonQuery();

       MessageBox.Show("Added", "Information", MessageBoxButtons.OK);

       cmd.CommandText = "SELECT password FROM Res_User WHERE username = @username";
       cmd.Parameters.AddWithValue("@username", username);
       cmd.ExecuteNonQuery();

       using (SqlDataReader reader = cmd.ExecuteReader())
       {
           if (reader.HasRows)
           {
               while (reader.Read())
               {
                    MessageBox.Show(reader["password"].ToString(), "Information", MessageBoxButtons.OK);
               }
           }
       }

我该如何去做第三部分?

只有有人可以帮我比较保存的编码。密码和登录密码。我在第一部分中所做的密码。

如果需要更多信息,请告诉我。

谢谢你。

任何帮助将不胜感激。

4

1 回答 1

0

当您在服务器上进行验证时,您可以尝试重新加密服务器上的密码和 pin。这样你就可以调用你的加密函数,然后进行比较,如果你有结果,你就知道输入了正确的密码。修改你的代码,它看起来像:

try
{
   using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["STRING"].ConnectionString))
   {
     using (SqlCommand cmd = new SqlCommand("dbo.Res_User", con))
     {
       cmd.CommandText = "INSERT INTO Res_User(username, password, key_pin) SELECT '" + username + "' , dbo.fnEncDecRc4('" + pin + "','" + password + "'), '" + pin + "'";
       con.Open();
       cmd.ExecuteNonQuery();

       MessageBox.Show("Added", "Information", MessageBoxButtons.OK);

       cmd.CommandText = "SELECT password FROM Res_User WHERE username = @username AND key_pin = @pin AND password = dbo.fnEncDecRc4(@pin, @password)";
       cmd.Parameters.AddWithValue("@username", username);
       cmd.Parameters.AddWithValue("@pin", pin);
       cmd.Parameters.AddWithValue("@password", password);
       cmd.ExecuteNonQuery();

       using (SqlDataReader reader = cmd.ExecuteReader())
       {
           if (reader.HasRows)
           {
               //successfully validated.
           }
       }
于 2012-10-08T15:59:55.843 回答