Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在mySQL数据库中存储bcrypt哈希密码。_C#_Wpf_Visual Studio_Bcrypt - Fatal编程技术网

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

C# 在mySQL数据库中存储bcrypt哈希密码。,c#,wpf,visual-studio,bcrypt,C#,Wpf,Visual Studio,Bcrypt,所以我在WPF中制作一个登录表单。我希望发生的是,如果我向数据库中添加一个新用户,密码就会被散列并存储在数据库中。这不起作用,我不知道我做错了什么。它甚至不会在没有哈希密码的情况下添加新用户。我希望能得到一些帮助 单击事件以添加新用户: private void btnAdd_Click(object sender, RoutedEventArgs e) { clsDB cdb = new clsDB(); cdb.Adduser(tbUsername.T

所以我在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();
        }
    }
}

看起来你在吃这个例外。是否有可能发生了异常而您没有看到它?您是对的:)它确实抛出了一个异常。它抛出了这个异常。BCrypt.Net.SaltParseException:“无效的盐版本”不要吃这些异常!哈哈,学到的一课谢谢你的帮助!我确实吸取了教训,哈哈。