C# 在mySQL数据库中存储bcrypt哈希密码。
所以我在WPF中制作一个登录表单。我希望发生的是,如果我向数据库中添加一个新用户,密码就会被散列并存储在数据库中。这不起作用,我不知道我做错了什么。它甚至不会在没有哈希密码的情况下添加新用户。我希望能得到一些帮助 单击事件以添加新用户: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
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:“无效的盐版本”不要吃这些异常!哈哈,学到的一课谢谢你的帮助!我确实吸取了教训,哈哈。