如何通过使用BCRYPT验证从MySql验证Salt密码

时间:2019-06-27 19:51:06

标签: c# winforms

我的代码确实有一些问题,我在Winform项目中使用BCRYPT库。进行注册后,一切正常,以下代码用于注册表格。这是我的代码供您查看。

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

我具有用户类型(管理员,工作人员,人力资源等),并且如果用户面板不起作用,我想尝试此代码。但是,由于我无法使用BCrypt验证密码,因此,我最好还是保留旧代码,但是人们建议使用Parameters完全没有安全性。

如果有人可以帮助我如何验证密码,请告诉我。已经快1周了,仍然没有好结果。

0 个答案:

没有答案