Как я могу проверить солевой пароль от MySql с помощью BCRYPT Verify - PullRequest
0 голосов
/ 27 июня 2019

У меня есть некоторые проблемы с моим кодом, который я использую библиотеки BCRYPT для моего проекта Winform.Когда регистрация сделана, все работает нормально и код, как показано ниже для регистрационных форм.Вот мой код, чтобы вы могли его просмотреть.

using BCrypt.Net;

Код из регистрационной формы, этот работает нормально.

cmd.Parameters.AddWithValue("@Password", BCrypt.Net.BCrypt.HashPassword(txtPassword.Text));

Но когда я хочу войти, я пытаюсь использовать этокод, как показано ниже.

public partial class Login : Form
    {
        MySqlConnection Connection = new MySqlConnection("server=localhost; database=bh_lms; user=root; password=root; pooling = false; convert zero datetime=True");

        public Login()
        {
            InitializeComponent();
        }

        private void Login_Load(object sender, EventArgs e)
        {
            //SplashScreen Loading
            for (int i = 0; i < 120; i++)
            {
                Thread.Sleep(40);
            }
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {

            if (BCrypt.Net.BCrypt.Verify(txtPassword.Text, ""))
            {
                Connection.Open();
                MySqlCommand cmd = new MySqlCommand("SELECT * FROM registration Where Username=@Username, Password=@Password", Connection);
                cmd.Parameters.Add(new MySqlParameter("@Username", txtUsername.Text));
                cmd.Parameters.Add(new MySqlParameter("@Password", txtPassword.Text));
                MySqlDataReader reader = cmd.ExecuteReader();
                int count = 0;
                string userRole = string.Empty;
                while (reader.Read())
                {
                    count = +1;
                    userRole = reader["RegistrationType"].ToString();
                }
                if (count == 1)
                {
                    this.Hide();
                    if (userRole == "Admin")
                    {
                        Dashboard.dbAdmin DashboardAdmin = new Dashboard.dbAdmin();
                        DashboardAdmin.Show();
                    }
                    else if (count > 1)
                    {
                        MessageBox.Show("Please enter correct username and password or register a new account!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Error); ;
                    }
                }
            }
            else
            {
                Connection.Close();
            }
        }

        private void btnRegister_Click(object sender, EventArgs e)
        {
            this.Hide();
            Registration Register = new Registration();
            Register.Show();
        }
    }
}

У меня есть тип пользователя (Admin, Staff, HR и т. Д.), И я хочу попробовать этот код, если он работает или нет для панели пользователя.Но так как я не могу проверить пароль с помощью BCrypt, мне кажется, что мне лучше придерживаться старого кода, но при этом нет никакой безопасности, когда люди предлагают использовать параметры.

Если кто-то может мне помочь, как я могуподтвердите пароль, пожалуйста, дайте мне знать.Это почти 1 неделя, все еще не дало хорошего результата.

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