c # winforms запрашивает хешированный пароль в базе данных MySQL - PullRequest
0 голосов
/ 06 апреля 2019

Здравствуйте, у меня есть проблема. У меня есть веб-сайт, на котором есть страница входа и регистрации. Это работает хорошо и хранит кредиты в моем БД правильно. (https://imgur.com/uuBvhQP) Теперь мне нужно иметь возможность проверить электронную почту и пароль из моей формы входа в систему c #, но проблема в том, что пароли хешируются, и я не знаю, что с этим делать в моей форме. Я никогда не использовал хешированные пароли в своей программе, поэтому до сих пор, как она работала, моя winform брала значения из @email и @pass и сравнивала их с БД, где пароль не хэшировался.

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");
    }

1 Ответ

0 голосов
/ 06 апреля 2019

Как уже предлагалось другими в комментариях, вы используете тот же алгоритм для хеширования ввода пользователя, который вы уже использовали в регистрационной форме.Затем вы сравниваете хэшированные данные с хэшированными данными в вашей БД.

Пожалуйста, никогда не храните пароли в виде открытого текста или хэшированных со слабым алгоритмом.Многие пользователи всегда используют один и тот же пароль, и если кто-то получает доступ к вашей БД, это, безусловно, очень плохо ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...