在mySQL数据库中存储bcrypt哈希密码。

时间:2018-04-11 16:23:03

标签: c# wpf visual-studio bcrypt

所以我在WPF中创建了一个登录表单。我想要发生的是,如果我将新用户添加到我的数据库,密码将被散列并存储在我的数据库中。这不起作用,我不知道我做错了什么。它甚至没有添加没有哈希密码的新用户。我将不胜感激。

点击事件以添加新用户:

private void btnAdd_Click(object sender, RoutedEventArgs e)
    {
        clsDB cdb = new clsDB();
        cdb.Adduser(tbUsername.Text, tbPassword.Text);
        MessageBox.Show("user toegevoegd!");
        this.Close();
    }

这是数据库类:

class clsDB
{
    MySqlConnection conn = new MySqlConnection("server=localhost;Database=loginbcrypt;Uid=root;pwd=");

    public int GetUserid(string un, string pwd)
    {
        int iUserID = 0;
        conn.Open();

        MySqlCommand cmd = conn.CreateCommand();
        cmd.CommandText = "select UserId from users where Username = @username and Password = @password";
        cmd.Parameters.AddWithValue("@username", un);
        cmd.Parameters.AddWithValue("@password", pwd);

        string sUserId = cmd.ExecuteScalar().ToString();
        iUserID = int.Parse(sUserId);
        conn.Close();
        return iUserID;
    }

    public void Adduser(string un, string pwd)
    {
        try
        {
            conn.Open();

            pwd = pwd + "$Y.N3T~J";
            string salt = BCrypt.Net.BCrypt.GenerateSalt();
            string hashToStoreInDatabase = BCrypt.Net.BCrypt.HashPassword(pwd, salt);
            bool doesPasswordMatch = BCrypt.Net.BCrypt.Verify(pwd, un);

            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "insert into users (Username, Password) values (@username, @password)";
            cmd.Parameters.AddWithValue("@username", un);
            cmd.Parameters.AddWithValue("@password", pwd);
            cmd.ExecuteNonQuery();
        }
        catch (Exception)
        {


        }
        finally
        {
            conn.Close();
        }
    }
}

0 个答案:

没有答案